/**
 */
package BlipTGG.Rules;

import BlipLanguage.BlipApplication;
import BlipLanguage.BlipLanguageFactory;
import BlipLanguage.BlipModel;
import BlipLanguage.BlipModelAttribute;

import BlipTGG.BlipTGGFactory;
import BlipTGG.MApplicationToApplication;
import BlipTGG.MModelAttributeToModelAttribute;
import BlipTGG.MModelToModel;

import MocaTree.Attribute;
import MocaTree.MocaTreeFactory;
import MocaTree.Node;

import TGGLanguage.csp.*;

import TGGRuntime.AbstractRule;
import TGGRuntime.Edge;
import TGGRuntime.IsApplicableMatch;
import TGGRuntime.IsApplicableRuleResult;
import TGGRuntime.IsAppropriateRuleResult;
import TGGRuntime.Match;
import TGGRuntime.PerformRuleResult;
import TGGRuntime.TGGRuntimeFactory;

import csp.constraints.*;

import de.upb.tools.sdm.*;

import java.util.*;

import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EOperation;

/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>MModel Attribute To Model Attribute Rule</b></em>'.
 * <!-- end-user-doc -->
 *
 *
 * @see BlipTGG.Rules.RulesPackage#getMModelAttributeToModelAttributeRule()
 * @model
 * @generated
 */
public interface MModelAttributeToModelAttributeRule extends EObject,
		AbstractRule {
	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @model annotation="SDM XMI='<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<activities:Activity xmi:version=\"2.0\" xmlns:xmi=\"http://www.omg.org/XMI\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:TGGLanguage=\"http://www.moflon.org.TGGLanguage\" xmlns:activities=\"http://www.moflon.org.SDMLanguage.activities\" xmlns:csp=\"http://www.moflon.org.TGGLanguage.csp\" xmlns:ecore=\"http://www.eclipse.org/emf/2002/Ecore\" xmlns:expressions=\"http://www.moflon.org.SDMLanguage.expressions\" xmlns:patternExpressions=\"http://www.moflon.org.SDMLanguage.patterns.patternExpressions\">\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"collect translated elements\" outgoing=\"//@ownedActivityEdge.3\" incoming=\"//@ownedActivityEdge.1\">\r\n    <storyPattern>\r\n      <objectVariable name=\"ruleresult\" outgoingLink=\"//@ownedActivityNode.0/@storyPattern/@linkVariable.0 //@ownedActivityNode.0/@storyPattern/@linkVariable.1 //@ownedActivityNode.0/@storyPattern/@linkVariable.2 //@ownedActivityNode.0/@storyPattern/@linkVariable.3\" bindingOperator=\"CREATE\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//PerformRuleResult\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"http://www.moflon.org.TGGRuntime#//RuleResult/success\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"true\"/>\r\n        </attributeAssignment>\r\n      </objectVariable>\r\n      <objectVariable name=\"modelAttributeNode\" incomingLink=\"//@ownedActivityNode.0/@storyPattern/@linkVariable.0\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Node\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"typeAttr\" incomingLink=\"//@ownedActivityNode.0/@storyPattern/@linkVariable.1\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Attribute\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"ma2bma\" incomingLink=\"//@ownedActivityNode.0/@storyPattern/@linkVariable.2\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.BlipTGG#//MModelAttributeToModelAttribute\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"blipModelAttribute\" incomingLink=\"//@ownedActivityNode.0/@storyPattern/@linkVariable.3\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/resource/BlipLanguage/model/BlipLanguage.ecore#//BlipModelAttribute\"/>\r\n      </objectVariable>\r\n      <linkVariable name=\"translatedElements\" target=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.1\" source=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"translatedElements\" target=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.2\" source=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"createdLinkElements\" target=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.3\" source=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"createdElements\" target=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.4\" source=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"perform transformation\" outgoing=\"//@ownedActivityEdge.1\" incoming=\"//@ownedActivityEdge.0\">\r\n    <storyPattern xsi:type=\"TGGLanguage:TGGRule\" name=\"MModelAttributeToModelAttributeRule\" cspSpec=\"&#xD;&#xA;&#x9;&#x9;eq(modelAttributeNode.name, blipModelAttribute.name)&#xD;&#xA;&#x9;&#x9;eq(typeAttr.value, blipModelAttribute.type)&#xD;&#xA;&#x9;\">\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"modelNode\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Node\"/>\r\n        <bindingExpression xsi:type=\"expressions:LiteralExpression\" value=\"isApplicableMatch.getObject(&quot;modelNode&quot;)\"/>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"modelAttributeNode\" incomingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.0\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Node\"/>\r\n        <bindingExpression xsi:type=\"expressions:LiteralExpression\" value=\"isApplicableMatch.getObject(&quot;modelAttributeNode&quot;)\"/>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"typeAttr\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Attribute\"/>\r\n        <bindingExpression xsi:type=\"expressions:LiteralExpression\" value=\"isApplicableMatch.getObject(&quot;typeAttr&quot;)\"/>\r\n        <constraint>\r\n          <constraintExpression xsi:type=\"expressions:ComparisonExpression\" operator=\"EQUAL\">\r\n            <rightExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;type&quot;\"/>\r\n            <leftExpression xsi:type=\"patternExpressions:AttributeValueExpression\">\r\n              <attribute href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//TreeElement/name\"/>\r\n            </leftExpression>\r\n          </constraintExpression>\r\n        </constraint>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"mModelToModel\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.BlipTGG#//MModelToModel\"/>\r\n        <bindingExpression xsi:type=\"expressions:LiteralExpression\" value=\"isApplicableMatch.getObject(&quot;mModelToModel&quot;)\"/>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.2\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"ma2bma\" outgoingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.0 //@ownedActivityNode.1/@storyPattern/@linkVariable.1\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.BlipTGG#//MModelAttributeToModelAttribute\"/>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.2\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"blipModel\" outgoingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.2\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/resource/BlipLanguage/model/BlipLanguage.ecore#//BlipModel\"/>\r\n        <bindingExpression xsi:type=\"expressions:LiteralExpression\" value=\"isApplicableMatch.getObject(&quot;blipModel&quot;)\"/>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.1\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"blipModelAttribute\" incomingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.1 //@ownedActivityNode.1/@storyPattern/@linkVariable.2\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/resource/BlipLanguage/model/BlipLanguage.ecore#//BlipModelAttribute\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"platform:/resource/BlipLanguage/model/BlipLanguage.ecore#//BlipModelAttribute/name\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"(java.lang.String)csp.getAttributeVariable(&quot;blipModelAttribute&quot;,&quot;name&quot;).getValue()\"/>\r\n        </attributeAssignment>\r\n        <attributeAssignment>\r\n          <attribute href=\"platform:/resource/BlipLanguage/model/BlipLanguage.ecore#//BlipModelAttribute/type\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"(java.lang.String)csp.getAttributeVariable(&quot;blipModelAttribute&quot;,&quot;type&quot;).getValue()\"/>\r\n        </attributeAssignment>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.1\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"csp\" incomingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.3\" bindingSemantics=\"OPTIONAL\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGLanguage#//csp/CSP\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"this\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.BlipTGG#//Rules/MModelAttributeToModelAttributeRule\"/>\r\n        <bindingExpression xsi:type=\"expressions:LiteralExpression\" value=\"isApplicableMatch.getObject(&quot;this&quot;)\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"isApplicableMatch\" outgoingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.3\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//IsApplicableMatch\"/>\r\n      </objectVariable>\r\n      <linkVariable xsi:type=\"TGGLanguage:TGGLinkVariable\" name=\"source\" target=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.1\" source=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.4\" bindingOperator=\"CREATE\">\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.2\"/>\r\n      </linkVariable>\r\n      <linkVariable xsi:type=\"TGGLanguage:TGGLinkVariable\" name=\"target\" target=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.6\" source=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.4\" bindingOperator=\"CREATE\">\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.2\"/>\r\n      </linkVariable>\r\n      <linkVariable xsi:type=\"TGGLanguage:TGGLinkVariable\" name=\"attributes\" target=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.6\" source=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.5\" bindingOperator=\"CREATE\">\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.1\"/>\r\n      </linkVariable>\r\n      <linkVariable name=\"attributeInfo\" target=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.7\" source=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.9\"/>\r\n      <correspondence href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.2\"/>\r\n      <source href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      <csp>\r\n        <constraints variables=\"//@ownedActivityNode.1/@storyPattern/@csp/@variables.0 //@ownedActivityNode.1/@storyPattern/@csp/@variables.1\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <constraints variables=\"//@ownedActivityNode.1/@storyPattern/@csp/@variables.2 //@ownedActivityNode.1/@storyPattern/@csp/@variables.3\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <variables xsi:type=\"csp:AttributeVariable\" bound=\"true\" value=\"ACED000574001C6D6F64656C4174747269627574654E6F64652E6765744E616D652829\" type=\"String\" attribute=\"name\" objectVariable=\"modelAttributeNode\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"name\" objectVariable=\"blipModelAttribute\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" bound=\"true\" value=\"ACED000574001374797065417474722E67657456616C75652829\" type=\"String\" attribute=\"value\" objectVariable=\"typeAttr\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"type\" objectVariable=\"blipModelAttribute\"/>\r\n        <forward variables=\"//@ownedActivityNode.1/@storyPattern/@csp/@variables.0 //@ownedActivityNode.1/@storyPattern/@csp/@variables.1 //@ownedActivityNode.1/@storyPattern/@csp/@variables.2 //@ownedActivityNode.1/@storyPattern/@csp/@variables.3\" constraints=\"//@ownedActivityNode.1/@storyPattern/@csp/@constraints.0 //@ownedActivityNode.1/@storyPattern/@csp/@constraints.1\"/>\r\n        <simultaneous variables=\"//@ownedActivityNode.1/@storyPattern/@csp/@variables.0 //@ownedActivityNode.1/@storyPattern/@csp/@variables.1 //@ownedActivityNode.1/@storyPattern/@csp/@variables.2 //@ownedActivityNode.1/@storyPattern/@csp/@variables.3\" constraints=\"//@ownedActivityNode.1/@storyPattern/@csp/@constraints.0 //@ownedActivityNode.1/@storyPattern/@csp/@constraints.1\"/>\r\n        <backward variables=\"//@ownedActivityNode.1/@storyPattern/@csp/@variables.0 //@ownedActivityNode.1/@storyPattern/@csp/@variables.1 //@ownedActivityNode.1/@storyPattern/@csp/@variables.2 //@ownedActivityNode.1/@storyPattern/@csp/@variables.3\" constraints=\"//@ownedActivityNode.1/@storyPattern/@csp/@constraints.0 //@ownedActivityNode.1/@storyPattern/@csp/@constraints.1\"/>\r\n        <source/>\r\n        <target/>\r\n      </csp>\r\n      <target href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.1\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StopNode\" incoming=\"//@ownedActivityEdge.2\">\r\n    <returnValue xsi:type=\"patternExpressions:ObjectVariableExpression\" object=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.0\"/>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StartNode\" outgoing=\"//@ownedActivityEdge.0\"/>\r\n  <ownedActivityNode xsi:type=\"activities:StatementNode\" name=\"perform postprocessing\" outgoing=\"//@ownedActivityEdge.2\" incoming=\"//@ownedActivityEdge.4\">\r\n    <statementExpression xsi:type=\"expressions:LiteralExpression\" value=\"// No post processing method found\"/>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"bookkeeping for edges\" outgoing=\"//@ownedActivityEdge.4\" incoming=\"//@ownedActivityEdge.3\">\r\n    <storyPattern>\r\n      <objectVariable name=\"ruleresult\" outgoingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.0 //@ownedActivityNode.5/@storyPattern/@linkVariable.3 //@ownedActivityNode.5/@storyPattern/@linkVariable.7 //@ownedActivityNode.5/@storyPattern/@linkVariable.10 //@ownedActivityNode.5/@storyPattern/@linkVariable.13\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//PerformRuleResult\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"modelNode\" incomingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.1\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.eclipse.org/emf/2002/Ecore#//EObject\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"modelAttributeNode\" incomingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.2 //@ownedActivityNode.5/@storyPattern/@linkVariable.5 //@ownedActivityNode.5/@storyPattern/@linkVariable.6\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.eclipse.org/emf/2002/Ecore#//EObject\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"typeAttr\" incomingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.4\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.eclipse.org/emf/2002/Ecore#//EObject\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"mModelToModel\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.eclipse.org/emf/2002/Ecore#//EObject\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"ma2bma\" incomingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.8 //@ownedActivityNode.5/@storyPattern/@linkVariable.11\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.eclipse.org/emf/2002/Ecore#//EObject\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"blipModel\" incomingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.14\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.eclipse.org/emf/2002/Ecore#//EObject\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"blipModelAttribute\" incomingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.9 //@ownedActivityNode.5/@storyPattern/@linkVariable.12\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.eclipse.org/emf/2002/Ecore#//EObject\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"modelAttributeNode__parentNode__modelNode\" incomingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.0\" outgoingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.2 //@ownedActivityNode.5/@storyPattern/@linkVariable.1\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Edge\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"http://www.moflon.org.TGGRuntime#//Edge/name\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;parentNode&quot;\"/>\r\n        </attributeAssignment>\r\n      </objectVariable>\r\n      <objectVariable name=\"modelAttributeNode__attribute__typeAttr\" incomingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.3\" outgoingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.5 //@ownedActivityNode.5/@storyPattern/@linkVariable.4\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Edge\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"http://www.moflon.org.TGGRuntime#//Edge/name\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;attribute&quot;\"/>\r\n        </attributeAssignment>\r\n      </objectVariable>\r\n      <objectVariable name=\"ma2bma__source__modelAttributeNode\" incomingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.7\" outgoingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.6 //@ownedActivityNode.5/@storyPattern/@linkVariable.8\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Edge\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"http://www.moflon.org.TGGRuntime#//Edge/name\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;source&quot;\"/>\r\n        </attributeAssignment>\r\n      </objectVariable>\r\n      <objectVariable name=\"ma2bma__target__blipModelAttribute\" incomingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.10\" outgoingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.9 //@ownedActivityNode.5/@storyPattern/@linkVariable.11\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Edge\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"http://www.moflon.org.TGGRuntime#//Edge/name\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;target&quot;\"/>\r\n        </attributeAssignment>\r\n      </objectVariable>\r\n      <objectVariable name=\"blipModel__attributes__blipModelAttribute\" incomingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.13\" outgoingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.12 //@ownedActivityNode.5/@storyPattern/@linkVariable.14\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Edge\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"http://www.moflon.org.TGGRuntime#//Edge/name\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;attributes&quot;\"/>\r\n        </attributeAssignment>\r\n      </objectVariable>\r\n      <linkVariable name=\"translatedEdges\" target=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.8\" source=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"trg\" target=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.1\" source=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.8\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"src\" target=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.2\" source=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.8\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"translatedEdges\" target=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.9\" source=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"trg\" target=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.3\" source=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.9\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"src\" target=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.2\" source=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.9\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"trg\" target=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.2\" source=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.10\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"createdEdges\" target=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.10\" source=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"src\" target=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.5\" source=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.10\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"trg\" target=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.7\" source=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.11\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"createdEdges\" target=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.11\" source=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"src\" target=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.5\" source=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.11\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"trg\" target=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.7\" source=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.12\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"createdEdges\" target=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.12\" source=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"src\" target=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.6\" source=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.12\" bindingOperator=\"CREATE\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.3\" target=\"//@ownedActivityNode.1\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.1\" target=\"//@ownedActivityNode.0\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.4\" target=\"//@ownedActivityNode.2\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.0\" target=\"//@ownedActivityNode.5\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.5\" target=\"//@ownedActivityNode.4\"/>\r\n</activities:Activity>\r\n'"
	 *        annotation="http://www.eclipse.org/emf/2002/GenModel body='boolean fujaba__Success = false;\n      Object _TmpObject = null;\n      BlipModel blipModel = null;\n      MModelToModel mModelToModel = null;\n      Node modelAttributeNode = null;\n      Node modelNode = null;\n      Attribute typeAttr = null;\n      Iterator fujaba__IterIsApplicableMatchToCsp = null;\n      CSP csp = null;\n      MModelAttributeToModelAttribute ma2bma = null;\n      BlipModelAttribute blipModelAttribute = null;\n      PerformRuleResult ruleresult = null;\n      Edge ma2bma__target__blipModelAttribute = null;\n      Edge ma2bma__source__modelAttributeNode = null;\n      Edge modelAttributeNode__attribute__typeAttr = null;\n      Edge blipModel__attributes__blipModelAttribute = null;\n      Edge modelAttributeNode__parentNode__modelNode = null;\n\n      // story node \'perform transformation\'\n      try \n      {\n         fujaba__Success = false; \n\n         _TmpObject = (isApplicableMatch.getObject(\"blipModel\"));\n\n         // ensure correct type and really bound of object blipModel\n         JavaSDM.ensure ( _TmpObject instanceof BlipModel );\n         blipModel = (BlipModel) _TmpObject;\n         _TmpObject = (isApplicableMatch.getObject(\"mModelToModel\"));\n\n         // ensure correct type and really bound of object mModelToModel\n         JavaSDM.ensure ( _TmpObject instanceof MModelToModel );\n         mModelToModel = (MModelToModel) _TmpObject;\n         _TmpObject = (isApplicableMatch.getObject(\"modelAttributeNode\"));\n\n         // ensure correct type and really bound of object modelAttributeNode\n         JavaSDM.ensure ( _TmpObject instanceof Node );\n         modelAttributeNode = (Node) _TmpObject;\n         _TmpObject = (isApplicableMatch.getObject(\"modelNode\"));\n\n         // ensure correct type and really bound of object modelNode\n         JavaSDM.ensure ( _TmpObject instanceof Node );\n         modelNode = (Node) _TmpObject;\n         _TmpObject = (isApplicableMatch.getObject(\"typeAttr\"));\n\n         // ensure correct type and really bound of object typeAttr\n         JavaSDM.ensure ( _TmpObject instanceof Attribute );\n         typeAttr = (Attribute) _TmpObject;\n         // check object isApplicableMatch is really bound\n         JavaSDM.ensure ( isApplicableMatch != null );\n         // check isomorphic binding between objects modelNode and modelAttributeNode \n         JavaSDM.ensure ( !modelNode.equals (modelAttributeNode) );\n\n         // iterate to-many link attributeInfo from isApplicableMatch to csp\n         fujaba__Success = false;\n\n         fujaba__IterIsApplicableMatchToCsp = isApplicableMatch.getAttributeInfo().iterator ();\n\n         while ( !(fujaba__Success) && fujaba__IterIsApplicableMatchToCsp.hasNext () )\n         {\n            try\n            {\n               _TmpObject =  fujaba__IterIsApplicableMatchToCsp.next ();\n\n               // ensure correct type and really bound of object csp\n               JavaSDM.ensure ( _TmpObject instanceof CSP );\n               csp = (CSP) _TmpObject;\n\n               fujaba__Success = true;\n            }\n            catch ( JavaSDMException fujaba__InternalException )\n            {\n               fujaba__Success = false;\n            }\n         }\n         if (!fujaba__Success)\n         {\n            fujaba__Success = true;\n            csp = null;\n         }\n         // attribute condition\n         JavaSDM.ensure ( JavaSDM.stringCompare (typeAttr.getName (), \"type\") == 0 );\n\n         // create object ma2bma\n         ma2bma = BlipTGGFactory.eINSTANCE.createMModelAttributeToModelAttribute();\n\n         // create object blipModelAttribute\n         blipModelAttribute = BlipLanguageFactory.eINSTANCE.createBlipModelAttribute();\n\n         // assign attribute blipModelAttribute\n         blipModelAttribute.setName ((java.lang.String)csp.getAttributeVariable(\"blipModelAttribute\",\"name\").getValue());\n         // assign attribute blipModelAttribute\n         blipModelAttribute.setType ((java.lang.String)csp.getAttributeVariable(\"blipModelAttribute\",\"type\").getValue());\n\n         // create link\n         ma2bma.setSource( modelAttributeNode);\n\n\n         // create link\n         org.moflon.util.eMoflonEMFUtil.addOppositeReference(ma2bma,blipModelAttribute,\"target\");\n\n         // create link\n         \tblipModel.getAttributes().add(blipModelAttribute); // add link\n\n         fujaba__Success = true;\n      }\n      catch ( JavaSDMException fujaba__InternalException )\n      {\n         fujaba__Success = false;\n      }\n\n      // story node \'collect translated elements\'\n      try \n      {\n         fujaba__Success = false; \n\n         // check object blipModelAttribute is really bound\n         JavaSDM.ensure ( blipModelAttribute != null );\n         // check object ma2bma is really bound\n         JavaSDM.ensure ( ma2bma != null );\n         // check object modelAttributeNode is really bound\n         JavaSDM.ensure ( modelAttributeNode != null );\n         // check object typeAttr is really bound\n         JavaSDM.ensure ( typeAttr != null );\n         // create object ruleresult\n         ruleresult = TGGRuntimeFactory.eINSTANCE.createPerformRuleResult();\n\n         // assign attribute ruleresult\n         ruleresult.setSuccess (true);\n\n         // create link\n         org.moflon.util.eMoflonEMFUtil.addOppositeReference(ruleresult,modelAttributeNode,\"translatedElements\");\n\n         // create link\n         org.moflon.util.eMoflonEMFUtil.addOppositeReference(ruleresult,ma2bma,\"createdLinkElements\");\n\n         // create link\n         org.moflon.util.eMoflonEMFUtil.addOppositeReference(ruleresult,typeAttr,\"translatedElements\");\n\n         // create link\n         org.moflon.util.eMoflonEMFUtil.addOppositeReference(ruleresult,blipModelAttribute,\"createdElements\");\n         fujaba__Success = true;\n      }\n      catch ( JavaSDMException fujaba__InternalException )\n      {\n         fujaba__Success = false;\n      }\n\n      // story node \'bookkeeping for edges\'\n      try \n      {\n         fujaba__Success = false; \n\n         // check object blipModel is really bound\n         JavaSDM.ensure ( blipModel != null );\n         // check object blipModelAttribute is really bound\n         JavaSDM.ensure ( blipModelAttribute != null );\n         // check object mModelToModel is really bound\n         JavaSDM.ensure ( mModelToModel != null );\n         // check object ma2bma is really bound\n         JavaSDM.ensure ( ma2bma != null );\n         // check object modelAttributeNode is really bound\n         JavaSDM.ensure ( modelAttributeNode != null );\n         // check object modelNode is really bound\n         JavaSDM.ensure ( modelNode != null );\n         // check object ruleresult is really bound\n         JavaSDM.ensure ( ruleresult != null );\n         // check object typeAttr is really bound\n         JavaSDM.ensure ( typeAttr != null );\n         // check isomorphic binding between objects blipModelAttribute and blipModel \n         JavaSDM.ensure ( !blipModelAttribute.equals (blipModel) );\n\n         // check isomorphic binding between objects mModelToModel and blipModel \n         JavaSDM.ensure ( !mModelToModel.equals (blipModel) );\n\n         // check isomorphic binding between objects ma2bma and blipModel \n         JavaSDM.ensure ( !ma2bma.equals (blipModel) );\n\n         // check isomorphic binding between objects modelAttributeNode and blipModel \n         JavaSDM.ensure ( !modelAttributeNode.equals (blipModel) );\n\n         // check isomorphic binding between objects modelNode and blipModel \n         JavaSDM.ensure ( !modelNode.equals (blipModel) );\n\n         // check isomorphic binding between objects typeAttr and blipModel \n         JavaSDM.ensure ( !typeAttr.equals (blipModel) );\n\n         // check isomorphic binding between objects mModelToModel and blipModelAttribute \n         JavaSDM.ensure ( !mModelToModel.equals (blipModelAttribute) );\n\n         // check isomorphic binding between objects ma2bma and blipModelAttribute \n         JavaSDM.ensure ( !ma2bma.equals (blipModelAttribute) );\n\n         // check isomorphic binding between objects modelAttributeNode and blipModelAttribute \n         JavaSDM.ensure ( !modelAttributeNode.equals (blipModelAttribute) );\n\n         // check isomorphic binding between objects modelNode and blipModelAttribute \n         JavaSDM.ensure ( !modelNode.equals (blipModelAttribute) );\n\n         // check isomorphic binding between objects typeAttr and blipModelAttribute \n         JavaSDM.ensure ( !typeAttr.equals (blipModelAttribute) );\n\n         // check isomorphic binding between objects ma2bma and mModelToModel \n         JavaSDM.ensure ( !ma2bma.equals (mModelToModel) );\n\n         // check isomorphic binding between objects modelAttributeNode and mModelToModel \n         JavaSDM.ensure ( !modelAttributeNode.equals (mModelToModel) );\n\n         // check isomorphic binding between objects modelNode and mModelToModel \n         JavaSDM.ensure ( !modelNode.equals (mModelToModel) );\n\n         // check isomorphic binding between objects typeAttr and mModelToModel \n         JavaSDM.ensure ( !typeAttr.equals (mModelToModel) );\n\n         // check isomorphic binding between objects modelAttributeNode and ma2bma \n         JavaSDM.ensure ( !modelAttributeNode.equals (ma2bma) );\n\n         // check isomorphic binding between objects modelNode and ma2bma \n         JavaSDM.ensure ( !modelNode.equals (ma2bma) );\n\n         // check isomorphic binding between objects typeAttr and ma2bma \n         JavaSDM.ensure ( !typeAttr.equals (ma2bma) );\n\n         // check isomorphic binding between objects modelNode and modelAttributeNode \n         JavaSDM.ensure ( !modelNode.equals (modelAttributeNode) );\n\n         // check isomorphic binding between objects typeAttr and modelAttributeNode \n         JavaSDM.ensure ( !typeAttr.equals (modelAttributeNode) );\n\n         // check isomorphic binding between objects typeAttr and modelNode \n         JavaSDM.ensure ( !typeAttr.equals (modelNode) );\n\n         // create object ma2bma__target__blipModelAttribute\n         ma2bma__target__blipModelAttribute = TGGRuntimeFactory.eINSTANCE.createEdge();\n\n         // create object ma2bma__source__modelAttributeNode\n         ma2bma__source__modelAttributeNode = TGGRuntimeFactory.eINSTANCE.createEdge();\n\n         // create object modelAttributeNode__attribute__typeAttr\n         modelAttributeNode__attribute__typeAttr = TGGRuntimeFactory.eINSTANCE.createEdge();\n\n         // create object blipModel__attributes__blipModelAttribute\n         blipModel__attributes__blipModelAttribute = TGGRuntimeFactory.eINSTANCE.createEdge();\n\n         // create object modelAttributeNode__parentNode__modelNode\n         modelAttributeNode__parentNode__modelNode = TGGRuntimeFactory.eINSTANCE.createEdge();\n\n         // assign attribute modelAttributeNode__parentNode__modelNode\n         modelAttributeNode__parentNode__modelNode.setName (\"parentNode\");\n         // assign attribute modelAttributeNode__attribute__typeAttr\n         modelAttributeNode__attribute__typeAttr.setName (\"attribute\");\n         // assign attribute ma2bma__source__modelAttributeNode\n         ma2bma__source__modelAttributeNode.setName (\"source\");\n         // assign attribute ma2bma__target__blipModelAttribute\n         ma2bma__target__blipModelAttribute.setName (\"target\");\n         // assign attribute blipModel__attributes__blipModelAttribute\n         blipModel__attributes__blipModelAttribute.setName (\"attributes\");\n\n         // create link\n         org.moflon.util.eMoflonEMFUtil.addOppositeReference(ruleresult,ma2bma__target__blipModelAttribute,\"createdEdges\");\n\n         // create link\n         org.moflon.util.eMoflonEMFUtil.addOppositeReference(ruleresult,ma2bma__source__modelAttributeNode,\"createdEdges\");\n\n         // create link\n         org.moflon.util.eMoflonEMFUtil.addOppositeReference(ruleresult,modelAttributeNode__attribute__typeAttr,\"translatedEdges\");\n\n         // create link\n         org.moflon.util.eMoflonEMFUtil.addOppositeReference(ruleresult,blipModel__attributes__blipModelAttribute,\"createdEdges\");\n\n         // create link\n         org.moflon.util.eMoflonEMFUtil.addOppositeReference(ruleresult,modelAttributeNode__parentNode__modelNode,\"translatedEdges\");\n\n         // create link\n         modelAttributeNode__parentNode__modelNode.setTrg( modelNode);\n\n\n         // create link\n         modelAttributeNode__parentNode__modelNode.setSrc( modelAttributeNode);\n\n\n         // create link\n         ma2bma__source__modelAttributeNode.setTrg( modelAttributeNode);\n\n\n         // create link\n         modelAttributeNode__attribute__typeAttr.setSrc( modelAttributeNode);\n\n\n         // create link\n         modelAttributeNode__attribute__typeAttr.setTrg( typeAttr);\n\n\n         // create link\n         ma2bma__target__blipModelAttribute.setSrc( ma2bma);\n\n\n         // create link\n         ma2bma__source__modelAttributeNode.setSrc( ma2bma);\n\n\n         // create link\n         blipModel__attributes__blipModelAttribute.setSrc( blipModel);\n\n\n         // create link\n         blipModel__attributes__blipModelAttribute.setTrg( blipModelAttribute);\n\n\n         // create link\n         ma2bma__target__blipModelAttribute.setTrg( blipModelAttribute);\n\n         fujaba__Success = true;\n      }\n      catch ( JavaSDMException fujaba__InternalException )\n      {\n         fujaba__Success = false;\n      }\n\n      // statement node \'perform postprocessing\'\n      // No post processing method found\n      return ruleresult;'"
	 * @generated
	 */
	PerformRuleResult perform_FWD(IsApplicableMatch isApplicableMatch);

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @model annotation="SDM XMI='<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<activities:Activity xmi:version=\"2.0\" xmlns:xmi=\"http://www.omg.org/XMI\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:activities=\"http://www.moflon.org.SDMLanguage.activities\" xmlns:ecore=\"http://www.eclipse.org/emf/2002/Ecore\" xmlns:expressions=\"http://www.moflon.org.SDMLanguage.expressions\">\r\n  <ownedActivityNode xsi:type=\"activities:StatementNode\" name=\"Check CSP\" outgoing=\"//@ownedActivityEdge.3 //@ownedActivityEdge.5\" incoming=\"//@ownedActivityEdge.1\">\r\n    <statementExpression xsi:type=\"expressions:LiteralExpression\" value=\"csp.check();\"/>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StatementNode\" name=\"Solve CSP\" outgoing=\"//@ownedActivityEdge.1\" incoming=\"//@ownedActivityEdge.2\">\r\n    <statementExpression xsi:type=\"expressions:LiteralExpression\" value=\"// Create CSP&#xD;&#xA;CSP csp = CspFactory.eINSTANCE.createCSP();&#xD;&#xA;&#xD;&#xA;// Create literals&#xD;&#xA;&#xD;&#xA;// Create attribute variables&#xD;&#xA;&#xD;&#xA;// Create explicit parameters&#xD;&#xA;&#xD;&#xA;// Create unbound variables&#xD;&#xA;&#xD;&#xA;// Create constraints&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;// Solve CSP&#xD;&#xA;\"/>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StopNode\" incoming=\"//@ownedActivityEdge.3\">\r\n    <returnValue xsi:type=\"expressions:LiteralExpression\" value=\"false\"/>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"collect elements to be translated\" outgoing=\"//@ownedActivityEdge.0\" incoming=\"//@ownedActivityEdge.5\">\r\n    <storyPattern>\r\n      <objectVariable name=\"match\" outgoingLink=\"//@ownedActivityNode.3/@storyPattern/@linkVariable.0 //@ownedActivityNode.3/@storyPattern/@linkVariable.1 //@ownedActivityNode.3/@storyPattern/@linkVariable.2 //@ownedActivityNode.3/@storyPattern/@linkVariable.5\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Match\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"modelAttributeNode\" incomingLink=\"//@ownedActivityNode.3/@storyPattern/@linkVariable.0 //@ownedActivityNode.3/@storyPattern/@linkVariable.3 //@ownedActivityNode.3/@storyPattern/@linkVariable.6\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Node\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"typeAttr\" incomingLink=\"//@ownedActivityNode.3/@storyPattern/@linkVariable.1 //@ownedActivityNode.3/@storyPattern/@linkVariable.7\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Attribute\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"modelAttributeNode__parentNode__modelNode\" incomingLink=\"//@ownedActivityNode.3/@storyPattern/@linkVariable.2\" outgoingLink=\"//@ownedActivityNode.3/@storyPattern/@linkVariable.3 //@ownedActivityNode.3/@storyPattern/@linkVariable.4\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Edge\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"http://www.moflon.org.TGGRuntime#//Edge/name\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;parentNode&quot;\"/>\r\n        </attributeAssignment>\r\n      </objectVariable>\r\n      <objectVariable name=\"modelNode\" incomingLink=\"//@ownedActivityNode.3/@storyPattern/@linkVariable.4\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Node\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"modelAttributeNode__attribute__typeAttr\" incomingLink=\"//@ownedActivityNode.3/@storyPattern/@linkVariable.5\" outgoingLink=\"//@ownedActivityNode.3/@storyPattern/@linkVariable.6 //@ownedActivityNode.3/@storyPattern/@linkVariable.7\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Edge\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"http://www.moflon.org.TGGRuntime#//Edge/name\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;attribute&quot;\"/>\r\n        </attributeAssignment>\r\n      </objectVariable>\r\n      <linkVariable name=\"toBeTranslatedElements\" target=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.1\" source=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"toBeTranslatedElements\" target=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.2\" source=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"toBeTranslatedEdges\" target=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.3\" source=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"src\" target=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.1\" source=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.3\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"trg\" target=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.4\" source=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.3\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"toBeTranslatedEdges\" target=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.5\" source=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"src\" target=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.1\" source=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.5\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"trg\" target=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.2\" source=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.5\" bindingOperator=\"CREATE\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StartNode\" outgoing=\"//@ownedActivityEdge.2\"/>\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"collect context elements\" outgoing=\"//@ownedActivityEdge.4\" incoming=\"//@ownedActivityEdge.0\">\r\n    <storyPattern>\r\n      <objectVariable name=\"match\" outgoingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.0\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Match\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"modelNode\" incomingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.0\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Node\"/>\r\n      </objectVariable>\r\n      <linkVariable name=\"contextNodes\" target=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.1\" source=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StopNode\" incoming=\"//@ownedActivityEdge.6\">\r\n    <returnValue xsi:type=\"expressions:LiteralExpression\" value=\"true\"/>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StatementNode\" name=\"register objects to match\" outgoing=\"//@ownedActivityEdge.6\" incoming=\"//@ownedActivityEdge.4\">\r\n    <statementExpression xsi:type=\"expressions:LiteralExpression\" value=\"match.registerObject(&quot;modelNode&quot;, modelNode);&#xA;match.registerObject(&quot;modelAttributeNode&quot;, modelAttributeNode);&#xA;match.registerObject(&quot;typeAttr&quot;, typeAttr);&#xA;\"/>\r\n  </ownedActivityNode>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.3\" target=\"//@ownedActivityNode.5\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.1\" target=\"//@ownedActivityNode.0\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.4\" target=\"//@ownedActivityNode.1\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.0\" target=\"//@ownedActivityNode.2\" guard=\"FAILURE\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.5\" target=\"//@ownedActivityNode.7\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.0\" target=\"//@ownedActivityNode.3\" guard=\"SUCCESS\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.7\" target=\"//@ownedActivityNode.6\"/>\r\n</activities:Activity>\r\n'"
	 *        annotation="http://www.eclipse.org/emf/2002/GenModel body='boolean fujaba__Success = false;\n      Edge modelAttributeNode__parentNode__modelNode = null;\n      Edge modelAttributeNode__attribute__typeAttr = null;\n\n      // statement node \'Solve CSP\'\n      // Create CSP\n      CSP csp = CspFactory.eINSTANCE.createCSP();\n\n      // Create literals\n\n      // Create attribute variables\n\n      // Create explicit parameters\n\n      // Create unbound variables\n\n      // Create constraints\n\n\n\n\n      // Solve CSP\n\n      // statement node \'Check CSP\'\n      fujaba__Success = csp.check();\n      if (fujaba__Success)\n      {\n         // story node \'collect elements to be translated\'\n         try \n         {\n            fujaba__Success = false; \n\n            // check object match is really bound\n            JavaSDM.ensure ( match != null );\n            // check object modelAttributeNode is really bound\n            JavaSDM.ensure ( modelAttributeNode != null );\n            // check object modelNode is really bound\n            JavaSDM.ensure ( modelNode != null );\n            // check object typeAttr is really bound\n            JavaSDM.ensure ( typeAttr != null );\n            // check isomorphic binding between objects modelNode and modelAttributeNode \n            JavaSDM.ensure ( !modelNode.equals (modelAttributeNode) );\n\n            // create object modelAttributeNode__parentNode__modelNode\n            modelAttributeNode__parentNode__modelNode = TGGRuntimeFactory.eINSTANCE.createEdge();\n\n            // create object modelAttributeNode__attribute__typeAttr\n            modelAttributeNode__attribute__typeAttr = TGGRuntimeFactory.eINSTANCE.createEdge();\n\n            // assign attribute modelAttributeNode__parentNode__modelNode\n            modelAttributeNode__parentNode__modelNode.setName (\"parentNode\");\n            // assign attribute modelAttributeNode__attribute__typeAttr\n            modelAttributeNode__attribute__typeAttr.setName (\"attribute\");\n\n            // create link\n            org.moflon.util.eMoflonEMFUtil.addOppositeReference(match,modelAttributeNode__parentNode__modelNode,\"toBeTranslatedEdges\");\n\n            // create link\n            org.moflon.util.eMoflonEMFUtil.addOppositeReference(match,typeAttr,\"toBeTranslatedElements\");\n\n            // create link\n            org.moflon.util.eMoflonEMFUtil.addOppositeReference(match,modelAttributeNode,\"toBeTranslatedElements\");\n\n            // create link\n            org.moflon.util.eMoflonEMFUtil.addOppositeReference(match,modelAttributeNode__attribute__typeAttr,\"toBeTranslatedEdges\");\n\n            // create link\n            modelAttributeNode__parentNode__modelNode.setSrc( modelAttributeNode);\n\n\n            // create link\n            modelAttributeNode__attribute__typeAttr.setSrc( modelAttributeNode);\n\n\n            // create link\n            modelAttributeNode__attribute__typeAttr.setTrg( typeAttr);\n\n\n            // create link\n            org.moflon.util.eMoflonEMFUtil.addOppositeReference(modelAttributeNode__parentNode__modelNode,modelNode,\"trg\");\n            fujaba__Success = true;\n         }\n         catch ( JavaSDMException fujaba__InternalException )\n         {\n            fujaba__Success = false;\n         }\n\n         // story node \'collect context elements\'\n         try \n         {\n            fujaba__Success = false; \n\n            // check object match is really bound\n            JavaSDM.ensure ( match != null );\n            // check object modelNode is really bound\n            JavaSDM.ensure ( modelNode != null );\n\n            // create link\n            org.moflon.util.eMoflonEMFUtil.addOppositeReference(match,modelNode,\"contextNodes\");\n            fujaba__Success = true;\n         }\n         catch ( JavaSDMException fujaba__InternalException )\n         {\n            fujaba__Success = false;\n         }\n\n         // statement node \'register objects to match\'\n         match.registerObject(\"modelNode\", modelNode);\n         match.registerObject(\"modelAttributeNode\", modelAttributeNode);\n         match.registerObject(\"typeAttr\", typeAttr);\n\n         return true;\n\n      }\n      else\n      {\n         return false;\n\n      }'"
	 * @generated
	 */
	boolean isAppropriate_FWD(Match match, Node modelNode,
			Node modelAttributeNode, Attribute typeAttr);

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @model annotation="SDM XMI='<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<activities:Activity xmi:version=\"2.0\" xmlns:xmi=\"http://www.omg.org/XMI\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:TGGLanguage=\"http://www.moflon.org.TGGLanguage\" xmlns:activities=\"http://www.moflon.org.SDMLanguage.activities\" xmlns:csp=\"http://www.moflon.org.TGGLanguage.csp\" xmlns:ecore=\"http://www.eclipse.org/emf/2002/Ecore\" xmlns:expressions=\"http://www.moflon.org.SDMLanguage.expressions\" xmlns:patternExpressions=\"http://www.moflon.org.SDMLanguage.patterns.patternExpressions\">\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"core match\" outgoing=\"//@ownedActivityEdge.8\" incoming=\"//@ownedActivityEdge.2\">\r\n    <storyPattern xsi:type=\"TGGLanguage:TGGRule\" name=\"MModelAttributeToModelAttributeRule\" cspSpec=\"&#xD;&#xA;&#x9;&#x9;eq(modelAttributeNode.name, blipModelAttribute.name)&#xD;&#xA;&#x9;&#x9;eq(typeAttr.value, blipModelAttribute.type)&#xD;&#xA;&#x9;\">\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"modelNode\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Node\"/>\r\n        <bindingExpression xsi:type=\"expressions:LiteralExpression\" value=\"match.getObject(&quot;modelNode&quot;)\"/>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"modelAttributeNode\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Node\"/>\r\n        <bindingExpression xsi:type=\"expressions:LiteralExpression\" value=\"match.getObject(&quot;modelAttributeNode&quot;)\"/>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"typeAttr\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Attribute\"/>\r\n        <bindingExpression xsi:type=\"expressions:LiteralExpression\" value=\"match.getObject(&quot;typeAttr&quot;)\"/>\r\n        <constraint>\r\n          <constraintExpression xsi:type=\"expressions:ComparisonExpression\" operator=\"EQUAL\">\r\n            <rightExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;type&quot;\"/>\r\n            <leftExpression xsi:type=\"patternExpressions:AttributeValueExpression\">\r\n              <attribute href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//TreeElement/name\"/>\r\n            </leftExpression>\r\n          </constraintExpression>\r\n        </constraint>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"match\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Match\"/>\r\n      </objectVariable>\r\n      <correspondence href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.2\"/>\r\n      <source href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      <csp>\r\n        <constraints variables=\"//@ownedActivityNode.0/@storyPattern/@csp/@variables.0 //@ownedActivityNode.0/@storyPattern/@csp/@variables.1\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <constraints variables=\"//@ownedActivityNode.0/@storyPattern/@csp/@variables.2 //@ownedActivityNode.0/@storyPattern/@csp/@variables.3\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"name\" objectVariable=\"modelAttributeNode\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"name\" objectVariable=\"blipModelAttribute\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"value\" objectVariable=\"typeAttr\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"type\" objectVariable=\"blipModelAttribute\"/>\r\n      </csp>\r\n      <target href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.1\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"prepare return value\" outgoing=\"//@ownedActivityEdge.2\" incoming=\"//@ownedActivityEdge.4\">\r\n    <storyPattern>\r\n      <objectVariable name=\"ruleresult\" outgoingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.1\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//IsApplicableRuleResult\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"http://www.moflon.org.TGGRuntime#//RuleResult/success\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"false\"/>\r\n        </attributeAssignment>\r\n        <attributeAssignment>\r\n          <attribute href=\"http://www.moflon.org.TGGRuntime#//RuleResult/rule\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;MModelAttributeToModelAttributeRule&quot;\"/>\r\n        </attributeAssignment>\r\n      </objectVariable>\r\n      <objectVariable name=\"performOperation\" incomingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.0 //@ownedActivityNode.1/@storyPattern/@linkVariable.1\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.eclipse.org/emf/2002/Ecore#//EOperation\"/>\r\n        <constraint>\r\n          <constraintExpression xsi:type=\"expressions:ComparisonExpression\" operator=\"EQUAL\">\r\n            <rightExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;perform_FWD&quot;\"/>\r\n            <leftExpression xsi:type=\"patternExpressions:AttributeValueExpression\" object=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.1\">\r\n              <attribute href=\"http://www.eclipse.org/emf/2002/Ecore#//ENamedElement/name\"/>\r\n            </leftExpression>\r\n          </constraintExpression>\r\n        </constraint>\r\n      </objectVariable>\r\n      <objectVariable name=\"eClass\" outgoingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.0\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.eclipse.org/emf/2002/Ecore#//EClass\"/>\r\n        <bindingExpression xsi:type=\"expressions:LiteralExpression\" value=\"this.eClass()\"/>\r\n      </objectVariable>\r\n      <linkVariable name=\"eOperations\" target=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.1\" source=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.2\"/>\r\n      <linkVariable name=\"performOperation\" target=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.1\" source=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StopNode\" incoming=\"//@ownedActivityEdge.5\">\r\n    <returnValue xsi:type=\"patternExpressions:ObjectVariableExpression\" object=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.0\"/>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"find context\" outgoing=\"//@ownedActivityEdge.5 //@ownedActivityEdge.7\" incoming=\"//@ownedActivityEdge.0 //@ownedActivityEdge.3 //@ownedActivityEdge.8\" forEach=\"true\">\r\n    <storyPattern xsi:type=\"TGGLanguage:TGGRule\" name=\"MModelAttributeToModelAttributeRule\" cspSpec=\"&#xD;&#xA;&#x9;&#x9;eq(modelAttributeNode.name, blipModelAttribute.name)&#xD;&#xA;&#x9;&#x9;eq(typeAttr.value, blipModelAttribute.type)&#xD;&#xA;&#x9;\">\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"modelNode\" incomingLink=\"//@ownedActivityNode.3/@storyPattern/@linkVariable.0 //@ownedActivityNode.3/@storyPattern/@linkVariable.2\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Node\"/>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"modelAttributeNode\" outgoingLink=\"//@ownedActivityNode.3/@storyPattern/@linkVariable.0 //@ownedActivityNode.3/@storyPattern/@linkVariable.1\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Node\"/>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"typeAttr\" incomingLink=\"//@ownedActivityNode.3/@storyPattern/@linkVariable.1\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Attribute\"/>\r\n        <constraint>\r\n          <constraintExpression xsi:type=\"expressions:ComparisonExpression\" operator=\"EQUAL\">\r\n            <rightExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;type&quot;\"/>\r\n            <leftExpression xsi:type=\"patternExpressions:AttributeValueExpression\">\r\n              <attribute href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//TreeElement/name\"/>\r\n            </leftExpression>\r\n          </constraintExpression>\r\n        </constraint>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"mModelToModel\" outgoingLink=\"//@ownedActivityNode.3/@storyPattern/@linkVariable.2 //@ownedActivityNode.3/@storyPattern/@linkVariable.3\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.BlipTGG#//MModelToModel\"/>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.2\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"blipModel\" incomingLink=\"//@ownedActivityNode.3/@storyPattern/@linkVariable.3\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/resource/BlipLanguage/model/BlipLanguage.ecore#//BlipModel\"/>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.1\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"isApplicableMatch\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//IsApplicableMatch\"/>\r\n      </objectVariable>\r\n      <linkVariable xsi:type=\"TGGLanguage:TGGLinkVariable\" name=\"parentNode\" target=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.0\" source=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.1\">\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </linkVariable>\r\n      <linkVariable xsi:type=\"TGGLanguage:TGGLinkVariable\" name=\"attribute\" target=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.2\" source=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.1\">\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </linkVariable>\r\n      <linkVariable xsi:type=\"TGGLanguage:TGGLinkVariable\" name=\"source\" target=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.0\" source=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.3\">\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.2\"/>\r\n      </linkVariable>\r\n      <linkVariable xsi:type=\"TGGLanguage:TGGLinkVariable\" name=\"target\" target=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.4\" source=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.3\">\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.2\"/>\r\n      </linkVariable>\r\n      <correspondence href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.2\"/>\r\n      <source href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      <csp>\r\n        <constraints variables=\"//@ownedActivityNode.3/@storyPattern/@csp/@variables.0 //@ownedActivityNode.3/@storyPattern/@csp/@variables.1\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <constraints variables=\"//@ownedActivityNode.3/@storyPattern/@csp/@variables.2 //@ownedActivityNode.3/@storyPattern/@csp/@variables.3\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"name\" objectVariable=\"modelAttributeNode\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"name\" objectVariable=\"blipModelAttribute\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"value\" objectVariable=\"typeAttr\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"type\" objectVariable=\"blipModelAttribute\"/>\r\n      </csp>\r\n      <target href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.1\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"add match to rule result\" outgoing=\"//@ownedActivityEdge.3\" incoming=\"//@ownedActivityEdge.6\">\r\n    <storyPattern>\r\n      <objectVariable name=\"isApplicableMatch\" incomingLink=\"//@ownedActivityNode.4/@storyPattern/@linkVariable.0\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//IsApplicableMatch\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"ruleresult\" outgoingLink=\"//@ownedActivityNode.4/@storyPattern/@linkVariable.0\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//IsApplicableRuleResult\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"http://www.moflon.org.TGGRuntime#//RuleResult/success\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"true\"/>\r\n        </attributeAssignment>\r\n      </objectVariable>\r\n      <linkVariable name=\"isApplicableMatch\" target=\"//@ownedActivityNode.4/@storyPattern/@objectVariable.0\" source=\"//@ownedActivityNode.4/@storyPattern/@objectVariable.1\" bindingOperator=\"CREATE\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StatementNode\" name=\"check CSP\" outgoing=\"//@ownedActivityEdge.0 //@ownedActivityEdge.6\" incoming=\"//@ownedActivityEdge.1\">\r\n    <statementExpression xsi:type=\"expressions:LiteralExpression\" value=\"csp.check();\"/>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StatementNode\" name=\"solve CSP\" outgoing=\"//@ownedActivityEdge.1\" incoming=\"//@ownedActivityEdge.7\">\r\n    <statementExpression xsi:type=\"expressions:LiteralExpression\" value=\"// Create CSP&#xD;&#xA;CSP csp = CspFactory.eINSTANCE.createCSP();&#xD;&#xA;isApplicableMatch.getAttributeInfo().add(csp);&#xD;&#xA;&#xD;&#xA;// Create literals&#xD;&#xA;&#xD;&#xA;// Create attribute variables&#xD;&#xA;Variable&lt;String> var_modelAttributeNode_name = CspFactory.eINSTANCE.createVariable(&quot;modelAttributeNode.name&quot;, true, csp);&#xD;&#xA;var_modelAttributeNode_name.setValue(modelAttributeNode.getName());&#xD;&#xA;Variable&lt;String> var_typeAttr_value = CspFactory.eINSTANCE.createVariable(&quot;typeAttr.value&quot;, true, csp);&#xD;&#xA;var_typeAttr_value.setValue(typeAttr.getValue());&#xD;&#xA;&#xD;&#xA;// Create explicit parameters&#xD;&#xA;&#xD;&#xA;// Create unbound variables&#xD;&#xA;Variable&lt;String> var_blipModelAttribute_name = CspFactory.eINSTANCE.createVariable(&quot;blipModelAttribute.name&quot;, csp);&#xD;&#xA;Variable&lt;String> var_blipModelAttribute_type = CspFactory.eINSTANCE.createVariable(&quot;blipModelAttribute.type&quot;, csp);&#xD;&#xA;&#xD;&#xA;// Create constraints&#xD;&#xA;Eq&lt;String> eq = new Eq&lt;String>();Eq&lt;String> eq_0 = new Eq&lt;String>();&#xD;&#xA;&#xD;&#xA;csp.getConstraints().add(eq);&#xD;&#xA;csp.getConstraints().add(eq_0);&#xD;&#xA;&#xD;&#xA;// Solve CSP&#xD;&#xA;eq.setRuleName(&quot;&quot;);&#xD;&#xA;eq.solve(var_modelAttributeNode_name,var_blipModelAttribute_name);&#xD;&#xA;eq_0.setRuleName(&quot;&quot;);&#xD;&#xA;eq_0.solve(var_typeAttr_value,var_blipModelAttribute_type);&#xD;&#xA;&#xD;&#xA;// Snapshot pattern match on which CSP is solved&#xD;&#xA;isApplicableMatch.registerObject(&quot;modelNode&quot;,modelNode);&#xD;&#xA;isApplicableMatch.registerObject(&quot;modelAttributeNode&quot;,modelAttributeNode);&#xD;&#xA;isApplicableMatch.registerObject(&quot;typeAttr&quot;,typeAttr);&#xD;&#xA;isApplicableMatch.registerObject(&quot;mModelToModel&quot;,mModelToModel);&#xD;&#xA;isApplicableMatch.registerObject(&quot;blipModel&quot;,blipModel);&#xD;&#xA;\"/>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StartNode\" outgoing=\"//@ownedActivityEdge.4\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.5\" target=\"//@ownedActivityNode.3\" guard=\"FAILURE\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.6\" target=\"//@ownedActivityNode.5\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.1\" target=\"//@ownedActivityNode.0\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.4\" target=\"//@ownedActivityNode.3\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.7\" target=\"//@ownedActivityNode.1\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.3\" target=\"//@ownedActivityNode.2\" guard=\"END\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.5\" target=\"//@ownedActivityNode.4\" guard=\"SUCCESS\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.3\" target=\"//@ownedActivityNode.6\" guard=\"EACH_TIME\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.0\" target=\"//@ownedActivityNode.3\"/>\r\n</activities:Activity>\r\n'"
	 *        annotation="http://www.eclipse.org/emf/2002/GenModel body='boolean fujaba__Success = false;\n      Object _TmpObject = null;\n      EClass eClass = null;\n      Iterator fujaba__IterEClassToPerformOperation = null;\n      EOperation performOperation = null;\n      IsApplicableRuleResult ruleresult = null;\n      Node modelAttributeNode = null;\n      Node modelNode = null;\n      Attribute typeAttr = null;\n      IsApplicableMatch isApplicableMatch = null;\n      BlipModel blipModel = null;\n      Iterator fujaba__IterModelNodeToMModelToModel = null;\n      MModelToModel mModelToModel = null;\n\n      // story node \'prepare return value\'\n      try \n      {\n         fujaba__Success = false; \n\n         _TmpObject = (this.eClass());\n\n         // ensure correct type and really bound of object eClass\n         JavaSDM.ensure ( _TmpObject instanceof EClass );\n         eClass = (EClass) _TmpObject;\n         // iterate to-many link eOperations from eClass to performOperation\n         fujaba__Success = false;\n\n         fujaba__IterEClassToPerformOperation = eClass.getEOperations().iterator ();\n\n         while ( !(fujaba__Success) && fujaba__IterEClassToPerformOperation.hasNext () )\n         {\n            try\n            {\n               performOperation = (EOperation) fujaba__IterEClassToPerformOperation.next ();\n\n               // check object performOperation is really bound\n               JavaSDM.ensure ( performOperation != null );\n               // attribute condition\n               JavaSDM.ensure ( JavaSDM.stringCompare (performOperation.getName (), \"perform_FWD\") == 0 );\n\n\n               fujaba__Success = true;\n            }\n            catch ( JavaSDMException fujaba__InternalException )\n            {\n               fujaba__Success = false;\n            }\n         }\n         JavaSDM.ensure (fujaba__Success);\n         // create object ruleresult\n         ruleresult = TGGRuntimeFactory.eINSTANCE.createIsApplicableRuleResult();\n\n         // assign attribute ruleresult\n         ruleresult.setSuccess (false);\n         // assign attribute ruleresult\n         ruleresult.setRule (\"MModelAttributeToModelAttributeRule\");\n\n         // create link\n         org.moflon.util.eMoflonEMFUtil.addOppositeReference(ruleresult,performOperation,\"performOperation\");\n         fujaba__Success = true;\n      }\n      catch ( JavaSDMException fujaba__InternalException )\n      {\n         fujaba__Success = false;\n      }\n\n      // story node \'core match\'\n      try \n      {\n         fujaba__Success = false; \n\n         _TmpObject = (match.getObject(\"modelAttributeNode\"));\n\n         // ensure correct type and really bound of object modelAttributeNode\n         JavaSDM.ensure ( _TmpObject instanceof Node );\n         modelAttributeNode = (Node) _TmpObject;\n         _TmpObject = (match.getObject(\"modelNode\"));\n\n         // ensure correct type and really bound of object modelNode\n         JavaSDM.ensure ( _TmpObject instanceof Node );\n         modelNode = (Node) _TmpObject;\n         _TmpObject = (match.getObject(\"typeAttr\"));\n\n         // ensure correct type and really bound of object typeAttr\n         JavaSDM.ensure ( _TmpObject instanceof Attribute );\n         typeAttr = (Attribute) _TmpObject;\n         // check object match is really bound\n         JavaSDM.ensure ( match != null );\n         // check isomorphic binding between objects modelNode and modelAttributeNode \n         JavaSDM.ensure ( !modelNode.equals (modelAttributeNode) );\n\n         // attribute condition\n         JavaSDM.ensure ( JavaSDM.stringCompare (typeAttr.getName (), \"type\") == 0 );\n\n         fujaba__Success = true;\n      }\n      catch ( JavaSDMException fujaba__InternalException )\n      {\n         fujaba__Success = false;\n      }\n\n      // story node \'find context\'\n      try \n      {\n         fujaba__Success = false; \n\n         // check object modelAttributeNode is really bound\n         JavaSDM.ensure ( modelAttributeNode != null );\n         // check object modelNode is really bound\n         JavaSDM.ensure ( modelNode != null );\n         // check object typeAttr is really bound\n         JavaSDM.ensure ( typeAttr != null );\n         // check isomorphic binding between objects modelNode and modelAttributeNode \n         JavaSDM.ensure ( !modelNode.equals (modelAttributeNode) );\n\n         // check link attribute from typeAttr to modelAttributeNode\n         JavaSDM.ensure (modelAttributeNode.equals (typeAttr.getNode ()\n         ));\n\n         // check link children from modelAttributeNode to modelNode\n         JavaSDM.ensure (modelNode.equals (modelAttributeNode.getParentNode ()\n         ));\n\n         // iterate to-many link source from modelNode to mModelToModel\n         fujaba__Success = false;\n\n         fujaba__IterModelNodeToMModelToModel = new ArrayList(org.moflon.util.eMoflonEMFUtil.getOppositeReference(modelNode,MModelToModel.class,\"source\")).iterator ();\n\n         while ( fujaba__IterModelNodeToMModelToModel.hasNext () )\n         {\n            try\n            {\n               mModelToModel = (MModelToModel) fujaba__IterModelNodeToMModelToModel.next ();\n\n               // check object mModelToModel is really bound\n               JavaSDM.ensure ( mModelToModel != null );\n               // bind object\n               blipModel = mModelToModel.getTarget ();\n\n               // check object blipModel is really bound\n               JavaSDM.ensure ( blipModel != null );\n\n               // attribute condition\n               JavaSDM.ensure ( JavaSDM.stringCompare (typeAttr.getName (), \"type\") == 0 );\n\n               // create object isApplicableMatch\n               isApplicableMatch = TGGRuntimeFactory.eINSTANCE.createIsApplicableMatch();\n\n               // statement node \'solve CSP\'\n               // Create CSP\n               CSP csp = CspFactory.eINSTANCE.createCSP();\n               isApplicableMatch.getAttributeInfo().add(csp);\n\n               // Create literals\n\n               // Create attribute variables\n               Variable<String> var_modelAttributeNode_name = CspFactory.eINSTANCE.createVariable(\"modelAttributeNode.name\", true, csp);\n               var_modelAttributeNode_name.setValue(modelAttributeNode.getName());\n               Variable<String> var_typeAttr_value = CspFactory.eINSTANCE.createVariable(\"typeAttr.value\", true, csp);\n               var_typeAttr_value.setValue(typeAttr.getValue());\n\n               // Create explicit parameters\n\n               // Create unbound variables\n               Variable<String> var_blipModelAttribute_name = CspFactory.eINSTANCE.createVariable(\"blipModelAttribute.name\", csp);\n               Variable<String> var_blipModelAttribute_type = CspFactory.eINSTANCE.createVariable(\"blipModelAttribute.type\", csp);\n\n               // Create constraints\n               Eq<String> eq = new Eq<String>();Eq<String> eq_0 = new Eq<String>();\n\n               csp.getConstraints().add(eq);\n               csp.getConstraints().add(eq_0);\n\n               // Solve CSP\n               eq.setRuleName(\"\");\n               eq.solve(var_modelAttributeNode_name,var_blipModelAttribute_name);\n               eq_0.setRuleName(\"\");\n               eq_0.solve(var_typeAttr_value,var_blipModelAttribute_type);\n\n               // Snapshot pattern match on which CSP is solved\n               isApplicableMatch.registerObject(\"modelNode\",modelNode);\n               isApplicableMatch.registerObject(\"modelAttributeNode\",modelAttributeNode);\n               isApplicableMatch.registerObject(\"typeAttr\",typeAttr);\n               isApplicableMatch.registerObject(\"mModelToModel\",mModelToModel);\n               isApplicableMatch.registerObject(\"blipModel\",blipModel);\n\n               // statement node \'check CSP\'\n               fujaba__Success = csp.check();\n               if (fujaba__Success)\n               {\n                  // story node \'add match to rule result\'\n                  try \n                  {\n                     fujaba__Success = false; \n\n                     // check object isApplicableMatch is really bound\n                     JavaSDM.ensure ( isApplicableMatch != null );\n                     // check object ruleresult is really bound\n                     JavaSDM.ensure ( ruleresult != null );\n                     // assign attribute ruleresult\n                     ruleresult.setSuccess (true);\n\n                     // create link\n                     ruleresult.getIsApplicableMatch().add(isApplicableMatch);\n\n                     fujaba__Success = true;\n                  }\n                  catch ( JavaSDMException fujaba__InternalException )\n                  {\n                     fujaba__Success = false;\n                  }\n\n\n               }\n               else\n               {\n\n               }\n\n\n               fujaba__Success = true;\n            }\n            catch ( JavaSDMException fujaba__InternalException )\n            {\n               fujaba__Success = false;\n            }\n         }\n         JavaSDM.ensure (fujaba__Success);\n         fujaba__Success = true;\n      }\n      catch ( JavaSDMException fujaba__InternalException )\n      {\n         fujaba__Success = false;\n      }\n\n      return ruleresult;'"
	 * @generated
	 */
	IsApplicableRuleResult isApplicable_FWD(Match match);

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @model annotation="SDM XMI='<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<activities:Activity xmi:version=\"2.0\" xmlns:xmi=\"http://www.omg.org/XMI\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:TGGLanguage=\"http://www.moflon.org.TGGLanguage\" xmlns:activities=\"http://www.moflon.org.SDMLanguage.activities\" xmlns:csp=\"http://www.moflon.org.TGGLanguage.csp\" xmlns:ecore=\"http://www.eclipse.org/emf/2002/Ecore\" xmlns:expressions=\"http://www.moflon.org.SDMLanguage.expressions\" xmlns:patternExpressions=\"http://www.moflon.org.SDMLanguage.patterns.patternExpressions\">\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"collect translated elements\" outgoing=\"//@ownedActivityEdge.3\" incoming=\"//@ownedActivityEdge.1\">\r\n    <storyPattern>\r\n      <objectVariable name=\"ruleresult\" outgoingLink=\"//@ownedActivityNode.0/@storyPattern/@linkVariable.0 //@ownedActivityNode.0/@storyPattern/@linkVariable.1 //@ownedActivityNode.0/@storyPattern/@linkVariable.2 //@ownedActivityNode.0/@storyPattern/@linkVariable.3\" bindingOperator=\"CREATE\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//PerformRuleResult\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"http://www.moflon.org.TGGRuntime#//RuleResult/success\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"true\"/>\r\n        </attributeAssignment>\r\n      </objectVariable>\r\n      <objectVariable name=\"modelAttributeNode\" incomingLink=\"//@ownedActivityNode.0/@storyPattern/@linkVariable.0\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Node\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"typeAttr\" incomingLink=\"//@ownedActivityNode.0/@storyPattern/@linkVariable.1\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Attribute\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"ma2bma\" incomingLink=\"//@ownedActivityNode.0/@storyPattern/@linkVariable.2\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.BlipTGG#//MModelAttributeToModelAttribute\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"blipModelAttribute\" incomingLink=\"//@ownedActivityNode.0/@storyPattern/@linkVariable.3\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/resource/BlipLanguage/model/BlipLanguage.ecore#//BlipModelAttribute\"/>\r\n      </objectVariable>\r\n      <linkVariable name=\"createdElements\" target=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.1\" source=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"createdElements\" target=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.2\" source=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"createdLinkElements\" target=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.3\" source=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"translatedElements\" target=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.4\" source=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"perform transformation\" outgoing=\"//@ownedActivityEdge.1\" incoming=\"//@ownedActivityEdge.0\">\r\n    <storyPattern xsi:type=\"TGGLanguage:TGGRule\" name=\"MModelAttributeToModelAttributeRule\" cspSpec=\"&#xD;&#xA;&#x9;&#x9;eq(modelAttributeNode.name, blipModelAttribute.name)&#xD;&#xA;&#x9;&#x9;eq(typeAttr.value, blipModelAttribute.type)&#xD;&#xA;&#x9;\">\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"modelNode\" incomingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.0\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Node\"/>\r\n        <bindingExpression xsi:type=\"expressions:LiteralExpression\" value=\"isApplicableMatch.getObject(&quot;modelNode&quot;)\"/>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"modelAttributeNode\" incomingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.2\" outgoingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.0 //@ownedActivityNode.1/@storyPattern/@linkVariable.1\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Node\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//TreeElement/name\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"(java.lang.String)csp.getAttributeVariable(&quot;modelAttributeNode&quot;,&quot;name&quot;).getValue()\"/>\r\n        </attributeAssignment>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"typeAttr\" incomingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.1\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Attribute\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//TreeElement/name\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;type&quot;\"/>\r\n        </attributeAssignment>\r\n        <attributeAssignment>\r\n          <attribute href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Attribute/value\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"(java.lang.String)csp.getAttributeVariable(&quot;typeAttr&quot;,&quot;value&quot;).getValue()\"/>\r\n        </attributeAssignment>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"mModelToModel\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.BlipTGG#//MModelToModel\"/>\r\n        <bindingExpression xsi:type=\"expressions:LiteralExpression\" value=\"isApplicableMatch.getObject(&quot;mModelToModel&quot;)\"/>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.2\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"ma2bma\" outgoingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.2 //@ownedActivityNode.1/@storyPattern/@linkVariable.3\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.BlipTGG#//MModelAttributeToModelAttribute\"/>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.2\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"blipModel\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/resource/BlipLanguage/model/BlipLanguage.ecore#//BlipModel\"/>\r\n        <bindingExpression xsi:type=\"expressions:LiteralExpression\" value=\"isApplicableMatch.getObject(&quot;blipModel&quot;)\"/>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.1\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"blipModelAttribute\" incomingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.3\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/resource/BlipLanguage/model/BlipLanguage.ecore#//BlipModelAttribute\"/>\r\n        <bindingExpression xsi:type=\"expressions:LiteralExpression\" value=\"isApplicableMatch.getObject(&quot;blipModelAttribute&quot;)\"/>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.1\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"csp\" incomingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.4\" bindingSemantics=\"OPTIONAL\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGLanguage#//csp/CSP\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"this\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.BlipTGG#//Rules/MModelAttributeToModelAttributeRule\"/>\r\n        <bindingExpression xsi:type=\"expressions:LiteralExpression\" value=\"isApplicableMatch.getObject(&quot;this&quot;)\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"isApplicableMatch\" outgoingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.4\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//IsApplicableMatch\"/>\r\n      </objectVariable>\r\n      <linkVariable xsi:type=\"TGGLanguage:TGGLinkVariable\" name=\"parentNode\" target=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.0\" source=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.1\" bindingOperator=\"CREATE\">\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </linkVariable>\r\n      <linkVariable xsi:type=\"TGGLanguage:TGGLinkVariable\" name=\"attribute\" target=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.2\" source=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.1\" bindingOperator=\"CREATE\">\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </linkVariable>\r\n      <linkVariable xsi:type=\"TGGLanguage:TGGLinkVariable\" name=\"source\" target=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.1\" source=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.4\" bindingOperator=\"CREATE\">\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.2\"/>\r\n      </linkVariable>\r\n      <linkVariable xsi:type=\"TGGLanguage:TGGLinkVariable\" name=\"target\" target=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.6\" source=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.4\" bindingOperator=\"CREATE\">\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.2\"/>\r\n      </linkVariable>\r\n      <linkVariable name=\"attributeInfo\" target=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.7\" source=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.9\"/>\r\n      <correspondence href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.2\"/>\r\n      <source href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      <csp>\r\n        <constraints variables=\"//@ownedActivityNode.1/@storyPattern/@csp/@variables.0 //@ownedActivityNode.1/@storyPattern/@csp/@variables.1\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <constraints variables=\"//@ownedActivityNode.1/@storyPattern/@csp/@variables.2 //@ownedActivityNode.1/@storyPattern/@csp/@variables.3\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"name\" objectVariable=\"modelAttributeNode\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" bound=\"true\" value=\"ACED000574001C626C69704D6F64656C4174747269627574652E6765744E616D652829\" type=\"String\" attribute=\"name\" objectVariable=\"blipModelAttribute\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"value\" objectVariable=\"typeAttr\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" bound=\"true\" value=\"ACED000574001C626C69704D6F64656C4174747269627574652E676574547970652829\" type=\"String\" attribute=\"type\" objectVariable=\"blipModelAttribute\"/>\r\n        <forward variables=\"//@ownedActivityNode.1/@storyPattern/@csp/@variables.0 //@ownedActivityNode.1/@storyPattern/@csp/@variables.1 //@ownedActivityNode.1/@storyPattern/@csp/@variables.2 //@ownedActivityNode.1/@storyPattern/@csp/@variables.3\" constraints=\"//@ownedActivityNode.1/@storyPattern/@csp/@constraints.0 //@ownedActivityNode.1/@storyPattern/@csp/@constraints.1\"/>\r\n        <simultaneous variables=\"//@ownedActivityNode.1/@storyPattern/@csp/@variables.0 //@ownedActivityNode.1/@storyPattern/@csp/@variables.1 //@ownedActivityNode.1/@storyPattern/@csp/@variables.2 //@ownedActivityNode.1/@storyPattern/@csp/@variables.3\" constraints=\"//@ownedActivityNode.1/@storyPattern/@csp/@constraints.0 //@ownedActivityNode.1/@storyPattern/@csp/@constraints.1\"/>\r\n        <backward variables=\"//@ownedActivityNode.1/@storyPattern/@csp/@variables.0 //@ownedActivityNode.1/@storyPattern/@csp/@variables.1 //@ownedActivityNode.1/@storyPattern/@csp/@variables.2 //@ownedActivityNode.1/@storyPattern/@csp/@variables.3\" constraints=\"//@ownedActivityNode.1/@storyPattern/@csp/@constraints.0 //@ownedActivityNode.1/@storyPattern/@csp/@constraints.1\"/>\r\n        <source/>\r\n        <target/>\r\n      </csp>\r\n      <target href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.1\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StopNode\" incoming=\"//@ownedActivityEdge.2\">\r\n    <returnValue xsi:type=\"patternExpressions:ObjectVariableExpression\" object=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.0\"/>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StartNode\" outgoing=\"//@ownedActivityEdge.0\"/>\r\n  <ownedActivityNode xsi:type=\"activities:StatementNode\" name=\"perform postprocessing\" outgoing=\"//@ownedActivityEdge.2\" incoming=\"//@ownedActivityEdge.4\">\r\n    <statementExpression xsi:type=\"expressions:LiteralExpression\" value=\"// No post processing method found\"/>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"bookkeeping for edges\" outgoing=\"//@ownedActivityEdge.4\" incoming=\"//@ownedActivityEdge.3\">\r\n    <storyPattern>\r\n      <objectVariable name=\"ruleresult\" outgoingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.1 //@ownedActivityNode.5/@storyPattern/@linkVariable.4 //@ownedActivityNode.5/@storyPattern/@linkVariable.7 //@ownedActivityNode.5/@storyPattern/@linkVariable.10 //@ownedActivityNode.5/@storyPattern/@linkVariable.12\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//PerformRuleResult\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"modelNode\" incomingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.0\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.eclipse.org/emf/2002/Ecore#//EObject\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"modelAttributeNode\" incomingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.2 //@ownedActivityNode.5/@storyPattern/@linkVariable.5 //@ownedActivityNode.5/@storyPattern/@linkVariable.6\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.eclipse.org/emf/2002/Ecore#//EObject\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"typeAttr\" incomingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.3\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.eclipse.org/emf/2002/Ecore#//EObject\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"mModelToModel\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.eclipse.org/emf/2002/Ecore#//EObject\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"ma2bma\" incomingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.8 //@ownedActivityNode.5/@storyPattern/@linkVariable.11\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.eclipse.org/emf/2002/Ecore#//EObject\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"blipModel\" incomingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.14\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.eclipse.org/emf/2002/Ecore#//EObject\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"blipModelAttribute\" incomingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.9 //@ownedActivityNode.5/@storyPattern/@linkVariable.13\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.eclipse.org/emf/2002/Ecore#//EObject\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"modelAttributeNode__parentNode__modelNode\" incomingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.1\" outgoingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.0 //@ownedActivityNode.5/@storyPattern/@linkVariable.2\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Edge\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"http://www.moflon.org.TGGRuntime#//Edge/name\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;parentNode&quot;\"/>\r\n        </attributeAssignment>\r\n      </objectVariable>\r\n      <objectVariable name=\"modelAttributeNode__attribute__typeAttr\" incomingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.4\" outgoingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.3 //@ownedActivityNode.5/@storyPattern/@linkVariable.5\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Edge\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"http://www.moflon.org.TGGRuntime#//Edge/name\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;attribute&quot;\"/>\r\n        </attributeAssignment>\r\n      </objectVariable>\r\n      <objectVariable name=\"ma2bma__source__modelAttributeNode\" incomingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.7\" outgoingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.6 //@ownedActivityNode.5/@storyPattern/@linkVariable.8\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Edge\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"http://www.moflon.org.TGGRuntime#//Edge/name\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;source&quot;\"/>\r\n        </attributeAssignment>\r\n      </objectVariable>\r\n      <objectVariable name=\"ma2bma__target__blipModelAttribute\" incomingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.10\" outgoingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.9 //@ownedActivityNode.5/@storyPattern/@linkVariable.11\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Edge\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"http://www.moflon.org.TGGRuntime#//Edge/name\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;target&quot;\"/>\r\n        </attributeAssignment>\r\n      </objectVariable>\r\n      <objectVariable name=\"blipModel__attributes__blipModelAttribute\" incomingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.12\" outgoingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.14 //@ownedActivityNode.5/@storyPattern/@linkVariable.13\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Edge\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"http://www.moflon.org.TGGRuntime#//Edge/name\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;attributes&quot;\"/>\r\n        </attributeAssignment>\r\n      </objectVariable>\r\n      <linkVariable name=\"trg\" target=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.1\" source=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.8\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"createdEdges\" target=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.8\" source=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"src\" target=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.2\" source=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.8\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"trg\" target=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.3\" source=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.9\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"createdEdges\" target=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.9\" source=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"src\" target=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.2\" source=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.9\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"trg\" target=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.2\" source=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.10\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"createdEdges\" target=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.10\" source=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"src\" target=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.5\" source=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.10\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"trg\" target=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.7\" source=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.11\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"createdEdges\" target=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.11\" source=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"src\" target=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.5\" source=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.11\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"translatedEdges\" target=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.12\" source=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"trg\" target=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.7\" source=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.12\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"src\" target=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.6\" source=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.12\" bindingOperator=\"CREATE\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.3\" target=\"//@ownedActivityNode.1\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.1\" target=\"//@ownedActivityNode.0\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.4\" target=\"//@ownedActivityNode.2\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.0\" target=\"//@ownedActivityNode.5\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.5\" target=\"//@ownedActivityNode.4\"/>\r\n</activities:Activity>\r\n'"
	 *        annotation="http://www.eclipse.org/emf/2002/GenModel body='boolean fujaba__Success = false;\n      Object _TmpObject = null;\n      BlipModel blipModel = null;\n      BlipModelAttribute blipModelAttribute = null;\n      MModelToModel mModelToModel = null;\n      Node modelNode = null;\n      Iterator fujaba__IterIsApplicableMatchToCsp = null;\n      CSP csp = null;\n      Node modelAttributeNode = null;\n      Attribute typeAttr = null;\n      MModelAttributeToModelAttribute ma2bma = null;\n      PerformRuleResult ruleresult = null;\n      Edge ma2bma__source__modelAttributeNode = null;\n      Edge modelAttributeNode__attribute__typeAttr = null;\n      Edge modelAttributeNode__parentNode__modelNode = null;\n      Edge ma2bma__target__blipModelAttribute = null;\n      Edge blipModel__attributes__blipModelAttribute = null;\n\n      // story node \'perform transformation\'\n      try \n      {\n         fujaba__Success = false; \n\n         _TmpObject = (isApplicableMatch.getObject(\"blipModel\"));\n\n         // ensure correct type and really bound of object blipModel\n         JavaSDM.ensure ( _TmpObject instanceof BlipModel );\n         blipModel = (BlipModel) _TmpObject;\n         _TmpObject = (isApplicableMatch.getObject(\"blipModelAttribute\"));\n\n         // ensure correct type and really bound of object blipModelAttribute\n         JavaSDM.ensure ( _TmpObject instanceof BlipModelAttribute );\n         blipModelAttribute = (BlipModelAttribute) _TmpObject;\n         _TmpObject = (isApplicableMatch.getObject(\"mModelToModel\"));\n\n         // ensure correct type and really bound of object mModelToModel\n         JavaSDM.ensure ( _TmpObject instanceof MModelToModel );\n         mModelToModel = (MModelToModel) _TmpObject;\n         _TmpObject = (isApplicableMatch.getObject(\"modelNode\"));\n\n         // ensure correct type and really bound of object modelNode\n         JavaSDM.ensure ( _TmpObject instanceof Node );\n         modelNode = (Node) _TmpObject;\n         // check object isApplicableMatch is really bound\n         JavaSDM.ensure ( isApplicableMatch != null );\n         // iterate to-many link attributeInfo from isApplicableMatch to csp\n         fujaba__Success = false;\n\n         fujaba__IterIsApplicableMatchToCsp = isApplicableMatch.getAttributeInfo().iterator ();\n\n         while ( !(fujaba__Success) && fujaba__IterIsApplicableMatchToCsp.hasNext () )\n         {\n            try\n            {\n               _TmpObject =  fujaba__IterIsApplicableMatchToCsp.next ();\n\n               // ensure correct type and really bound of object csp\n               JavaSDM.ensure ( _TmpObject instanceof CSP );\n               csp = (CSP) _TmpObject;\n\n               fujaba__Success = true;\n            }\n            catch ( JavaSDMException fujaba__InternalException )\n            {\n               fujaba__Success = false;\n            }\n         }\n         if (!fujaba__Success)\n         {\n            fujaba__Success = true;\n            csp = null;\n         }\n         // create object modelAttributeNode\n         modelAttributeNode = MocaTreeFactory.eINSTANCE.createNode();\n\n         // create object typeAttr\n         typeAttr = MocaTreeFactory.eINSTANCE.createAttribute();\n\n         // create object ma2bma\n         ma2bma = BlipTGGFactory.eINSTANCE.createMModelAttributeToModelAttribute();\n\n         // assign attribute modelAttributeNode\n         modelAttributeNode.setName ((java.lang.String)csp.getAttributeVariable(\"modelAttributeNode\",\"name\").getValue());\n         // assign attribute typeAttr\n         typeAttr.setName (\"type\");\n         // assign attribute typeAttr\n         typeAttr.setValue ((java.lang.String)csp.getAttributeVariable(\"typeAttr\",\"value\").getValue());\n\n         // create link\n         org.moflon.util.eMoflonEMFUtil.addOppositeReference(ma2bma,blipModelAttribute,\"target\");\n\n         // create link\n         modelAttributeNode.setParentNode( modelNode);\n\n\n         // create link\n         typeAttr.setNode( modelAttributeNode);\n\n\n         // create link\n         ma2bma.setSource( modelAttributeNode);\n\n         fujaba__Success = true;\n      }\n      catch ( JavaSDMException fujaba__InternalException )\n      {\n         fujaba__Success = false;\n      }\n\n      // story node \'collect translated elements\'\n      try \n      {\n         fujaba__Success = false; \n\n         // check object blipModelAttribute is really bound\n         JavaSDM.ensure ( blipModelAttribute != null );\n         // check object ma2bma is really bound\n         JavaSDM.ensure ( ma2bma != null );\n         // check object modelAttributeNode is really bound\n         JavaSDM.ensure ( modelAttributeNode != null );\n         // check object typeAttr is really bound\n         JavaSDM.ensure ( typeAttr != null );\n         // create object ruleresult\n         ruleresult = TGGRuntimeFactory.eINSTANCE.createPerformRuleResult();\n\n         // assign attribute ruleresult\n         ruleresult.setSuccess (true);\n\n         // create link\n         org.moflon.util.eMoflonEMFUtil.addOppositeReference(ruleresult,blipModelAttribute,\"translatedElements\");\n\n         // create link\n         org.moflon.util.eMoflonEMFUtil.addOppositeReference(ruleresult,typeAttr,\"createdElements\");\n\n         // create link\n         org.moflon.util.eMoflonEMFUtil.addOppositeReference(ruleresult,ma2bma,\"createdLinkElements\");\n\n         // create link\n         org.moflon.util.eMoflonEMFUtil.addOppositeReference(ruleresult,modelAttributeNode,\"createdElements\");\n         fujaba__Success = true;\n      }\n      catch ( JavaSDMException fujaba__InternalException )\n      {\n         fujaba__Success = false;\n      }\n\n      // story node \'bookkeeping for edges\'\n      try \n      {\n         fujaba__Success = false; \n\n         // check object blipModel is really bound\n         JavaSDM.ensure ( blipModel != null );\n         // check object blipModelAttribute is really bound\n         JavaSDM.ensure ( blipModelAttribute != null );\n         // check object mModelToModel is really bound\n         JavaSDM.ensure ( mModelToModel != null );\n         // check object ma2bma is really bound\n         JavaSDM.ensure ( ma2bma != null );\n         // check object modelAttributeNode is really bound\n         JavaSDM.ensure ( modelAttributeNode != null );\n         // check object modelNode is really bound\n         JavaSDM.ensure ( modelNode != null );\n         // check object ruleresult is really bound\n         JavaSDM.ensure ( ruleresult != null );\n         // check object typeAttr is really bound\n         JavaSDM.ensure ( typeAttr != null );\n         // check isomorphic binding between objects blipModelAttribute and blipModel \n         JavaSDM.ensure ( !blipModelAttribute.equals (blipModel) );\n\n         // check isomorphic binding between objects mModelToModel and blipModel \n         JavaSDM.ensure ( !mModelToModel.equals (blipModel) );\n\n         // check isomorphic binding between objects ma2bma and blipModel \n         JavaSDM.ensure ( !ma2bma.equals (blipModel) );\n\n         // check isomorphic binding between objects modelAttributeNode and blipModel \n         JavaSDM.ensure ( !modelAttributeNode.equals (blipModel) );\n\n         // check isomorphic binding between objects modelNode and blipModel \n         JavaSDM.ensure ( !modelNode.equals (blipModel) );\n\n         // check isomorphic binding between objects typeAttr and blipModel \n         JavaSDM.ensure ( !typeAttr.equals (blipModel) );\n\n         // check isomorphic binding between objects mModelToModel and blipModelAttribute \n         JavaSDM.ensure ( !mModelToModel.equals (blipModelAttribute) );\n\n         // check isomorphic binding between objects ma2bma and blipModelAttribute \n         JavaSDM.ensure ( !ma2bma.equals (blipModelAttribute) );\n\n         // check isomorphic binding between objects modelAttributeNode and blipModelAttribute \n         JavaSDM.ensure ( !modelAttributeNode.equals (blipModelAttribute) );\n\n         // check isomorphic binding between objects modelNode and blipModelAttribute \n         JavaSDM.ensure ( !modelNode.equals (blipModelAttribute) );\n\n         // check isomorphic binding between objects typeAttr and blipModelAttribute \n         JavaSDM.ensure ( !typeAttr.equals (blipModelAttribute) );\n\n         // check isomorphic binding between objects ma2bma and mModelToModel \n         JavaSDM.ensure ( !ma2bma.equals (mModelToModel) );\n\n         // check isomorphic binding between objects modelAttributeNode and mModelToModel \n         JavaSDM.ensure ( !modelAttributeNode.equals (mModelToModel) );\n\n         // check isomorphic binding between objects modelNode and mModelToModel \n         JavaSDM.ensure ( !modelNode.equals (mModelToModel) );\n\n         // check isomorphic binding between objects typeAttr and mModelToModel \n         JavaSDM.ensure ( !typeAttr.equals (mModelToModel) );\n\n         // check isomorphic binding between objects modelAttributeNode and ma2bma \n         JavaSDM.ensure ( !modelAttributeNode.equals (ma2bma) );\n\n         // check isomorphic binding between objects modelNode and ma2bma \n         JavaSDM.ensure ( !modelNode.equals (ma2bma) );\n\n         // check isomorphic binding between objects typeAttr and ma2bma \n         JavaSDM.ensure ( !typeAttr.equals (ma2bma) );\n\n         // check isomorphic binding between objects modelNode and modelAttributeNode \n         JavaSDM.ensure ( !modelNode.equals (modelAttributeNode) );\n\n         // check isomorphic binding between objects typeAttr and modelAttributeNode \n         JavaSDM.ensure ( !typeAttr.equals (modelAttributeNode) );\n\n         // check isomorphic binding between objects typeAttr and modelNode \n         JavaSDM.ensure ( !typeAttr.equals (modelNode) );\n\n         // create object ma2bma__source__modelAttributeNode\n         ma2bma__source__modelAttributeNode = TGGRuntimeFactory.eINSTANCE.createEdge();\n\n         // create object modelAttributeNode__attribute__typeAttr\n         modelAttributeNode__attribute__typeAttr = TGGRuntimeFactory.eINSTANCE.createEdge();\n\n         // create object modelAttributeNode__parentNode__modelNode\n         modelAttributeNode__parentNode__modelNode = TGGRuntimeFactory.eINSTANCE.createEdge();\n\n         // create object ma2bma__target__blipModelAttribute\n         ma2bma__target__blipModelAttribute = TGGRuntimeFactory.eINSTANCE.createEdge();\n\n         // create object blipModel__attributes__blipModelAttribute\n         blipModel__attributes__blipModelAttribute = TGGRuntimeFactory.eINSTANCE.createEdge();\n\n         // assign attribute modelAttributeNode__parentNode__modelNode\n         modelAttributeNode__parentNode__modelNode.setName (\"parentNode\");\n         // assign attribute modelAttributeNode__attribute__typeAttr\n         modelAttributeNode__attribute__typeAttr.setName (\"attribute\");\n         // assign attribute ma2bma__source__modelAttributeNode\n         ma2bma__source__modelAttributeNode.setName (\"source\");\n         // assign attribute ma2bma__target__blipModelAttribute\n         ma2bma__target__blipModelAttribute.setName (\"target\");\n         // assign attribute blipModel__attributes__blipModelAttribute\n         blipModel__attributes__blipModelAttribute.setName (\"attributes\");\n\n         // create link\n         org.moflon.util.eMoflonEMFUtil.addOppositeReference(ruleresult,ma2bma__source__modelAttributeNode,\"createdEdges\");\n\n         // create link\n         org.moflon.util.eMoflonEMFUtil.addOppositeReference(ruleresult,modelAttributeNode__attribute__typeAttr,\"createdEdges\");\n\n         // create link\n         org.moflon.util.eMoflonEMFUtil.addOppositeReference(ruleresult,modelAttributeNode__parentNode__modelNode,\"createdEdges\");\n\n         // create link\n         org.moflon.util.eMoflonEMFUtil.addOppositeReference(ruleresult,ma2bma__target__blipModelAttribute,\"createdEdges\");\n\n         // create link\n         org.moflon.util.eMoflonEMFUtil.addOppositeReference(ruleresult,blipModel__attributes__blipModelAttribute,\"translatedEdges\");\n\n         // create link\n         modelAttributeNode__parentNode__modelNode.setTrg( modelNode);\n\n\n         // create link\n         modelAttributeNode__parentNode__modelNode.setSrc( modelAttributeNode);\n\n\n         // create link\n         modelAttributeNode__attribute__typeAttr.setSrc( modelAttributeNode);\n\n\n         // create link\n         ma2bma__source__modelAttributeNode.setTrg( modelAttributeNode);\n\n\n         // create link\n         modelAttributeNode__attribute__typeAttr.setTrg( typeAttr);\n\n\n         // create link\n         ma2bma__source__modelAttributeNode.setSrc( ma2bma);\n\n\n         // create link\n         ma2bma__target__blipModelAttribute.setSrc( ma2bma);\n\n\n         // create link\n         blipModel__attributes__blipModelAttribute.setSrc( blipModel);\n\n\n         // create link\n         blipModel__attributes__blipModelAttribute.setTrg( blipModelAttribute);\n\n\n         // create link\n         ma2bma__target__blipModelAttribute.setTrg( blipModelAttribute);\n\n         fujaba__Success = true;\n      }\n      catch ( JavaSDMException fujaba__InternalException )\n      {\n         fujaba__Success = false;\n      }\n\n      // statement node \'perform postprocessing\'\n      // No post processing method found\n      return ruleresult;'"
	 * @generated
	 */
	PerformRuleResult perform_BWD(IsApplicableMatch isApplicableMatch);

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @model annotation="SDM XMI='<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<activities:Activity xmi:version=\"2.0\" xmlns:xmi=\"http://www.omg.org/XMI\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:activities=\"http://www.moflon.org.SDMLanguage.activities\" xmlns:ecore=\"http://www.eclipse.org/emf/2002/Ecore\" xmlns:expressions=\"http://www.moflon.org.SDMLanguage.expressions\">\r\n  <ownedActivityNode xsi:type=\"activities:StatementNode\" name=\"Check CSP\" outgoing=\"//@ownedActivityEdge.3 //@ownedActivityEdge.5\" incoming=\"//@ownedActivityEdge.1\">\r\n    <statementExpression xsi:type=\"expressions:LiteralExpression\" value=\"csp.check();\"/>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StatementNode\" name=\"Solve CSP\" outgoing=\"//@ownedActivityEdge.1\" incoming=\"//@ownedActivityEdge.2\">\r\n    <statementExpression xsi:type=\"expressions:LiteralExpression\" value=\"// Create CSP&#xD;&#xA;CSP csp = CspFactory.eINSTANCE.createCSP();&#xD;&#xA;&#xD;&#xA;// Create literals&#xD;&#xA;&#xD;&#xA;// Create attribute variables&#xD;&#xA;&#xD;&#xA;// Create explicit parameters&#xD;&#xA;&#xD;&#xA;// Create unbound variables&#xD;&#xA;&#xD;&#xA;// Create constraints&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;// Solve CSP&#xD;&#xA;\"/>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StopNode\" incoming=\"//@ownedActivityEdge.3\">\r\n    <returnValue xsi:type=\"expressions:LiteralExpression\" value=\"false\"/>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"collect elements to be translated\" outgoing=\"//@ownedActivityEdge.0\" incoming=\"//@ownedActivityEdge.5\">\r\n    <storyPattern>\r\n      <objectVariable name=\"match\" outgoingLink=\"//@ownedActivityNode.3/@storyPattern/@linkVariable.0 //@ownedActivityNode.3/@storyPattern/@linkVariable.1\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Match\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"blipModelAttribute\" incomingLink=\"//@ownedActivityNode.3/@storyPattern/@linkVariable.0 //@ownedActivityNode.3/@storyPattern/@linkVariable.3\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/resource/BlipLanguage/model/BlipLanguage.ecore#//BlipModelAttribute\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"blipModel__attributes__blipModelAttribute\" incomingLink=\"//@ownedActivityNode.3/@storyPattern/@linkVariable.1\" outgoingLink=\"//@ownedActivityNode.3/@storyPattern/@linkVariable.2 //@ownedActivityNode.3/@storyPattern/@linkVariable.3\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Edge\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"http://www.moflon.org.TGGRuntime#//Edge/name\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;attributes&quot;\"/>\r\n        </attributeAssignment>\r\n      </objectVariable>\r\n      <objectVariable name=\"blipModel\" incomingLink=\"//@ownedActivityNode.3/@storyPattern/@linkVariable.2\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/resource/BlipLanguage/model/BlipLanguage.ecore#//BlipModel\"/>\r\n      </objectVariable>\r\n      <linkVariable name=\"toBeTranslatedElements\" target=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.1\" source=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"toBeTranslatedEdges\" target=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.2\" source=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"src\" target=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.3\" source=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.2\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"trg\" target=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.1\" source=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.2\" bindingOperator=\"CREATE\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StartNode\" outgoing=\"//@ownedActivityEdge.2\"/>\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"collect context elements\" outgoing=\"//@ownedActivityEdge.4\" incoming=\"//@ownedActivityEdge.0\">\r\n    <storyPattern>\r\n      <objectVariable name=\"match\" outgoingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.0\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Match\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"blipModel\" incomingLink=\"//@ownedActivityNode.5/@storyPattern/@linkVariable.0\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/resource/BlipLanguage/model/BlipLanguage.ecore#//BlipModel\"/>\r\n      </objectVariable>\r\n      <linkVariable name=\"contextNodes\" target=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.1\" source=\"//@ownedActivityNode.5/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StopNode\" incoming=\"//@ownedActivityEdge.6\">\r\n    <returnValue xsi:type=\"expressions:LiteralExpression\" value=\"true\"/>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StatementNode\" name=\"register objects to match\" outgoing=\"//@ownedActivityEdge.6\" incoming=\"//@ownedActivityEdge.4\">\r\n    <statementExpression xsi:type=\"expressions:LiteralExpression\" value=\"match.registerObject(&quot;blipModel&quot;, blipModel);&#xA;match.registerObject(&quot;blipModelAttribute&quot;, blipModelAttribute);&#xA;\"/>\r\n  </ownedActivityNode>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.3\" target=\"//@ownedActivityNode.5\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.1\" target=\"//@ownedActivityNode.0\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.4\" target=\"//@ownedActivityNode.1\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.0\" target=\"//@ownedActivityNode.2\" guard=\"FAILURE\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.5\" target=\"//@ownedActivityNode.7\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.0\" target=\"//@ownedActivityNode.3\" guard=\"SUCCESS\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.7\" target=\"//@ownedActivityNode.6\"/>\r\n</activities:Activity>\r\n'"
	 *        annotation="http://www.eclipse.org/emf/2002/GenModel body='boolean fujaba__Success = false;\n      Edge blipModel__attributes__blipModelAttribute = null;\n\n      // statement node \'Solve CSP\'\n      // Create CSP\n      CSP csp = CspFactory.eINSTANCE.createCSP();\n\n      // Create literals\n\n      // Create attribute variables\n\n      // Create explicit parameters\n\n      // Create unbound variables\n\n      // Create constraints\n\n\n\n\n      // Solve CSP\n\n      // statement node \'Check CSP\'\n      fujaba__Success = csp.check();\n      if (fujaba__Success)\n      {\n         // story node \'collect elements to be translated\'\n         try \n         {\n            fujaba__Success = false; \n\n            // check object blipModel is really bound\n            JavaSDM.ensure ( blipModel != null );\n            // check object blipModelAttribute is really bound\n            JavaSDM.ensure ( blipModelAttribute != null );\n            // check object match is really bound\n            JavaSDM.ensure ( match != null );\n            // create object blipModel__attributes__blipModelAttribute\n            blipModel__attributes__blipModelAttribute = TGGRuntimeFactory.eINSTANCE.createEdge();\n\n            // assign attribute blipModel__attributes__blipModelAttribute\n            blipModel__attributes__blipModelAttribute.setName (\"attributes\");\n\n            // create link\n            org.moflon.util.eMoflonEMFUtil.addOppositeReference(match,blipModel__attributes__blipModelAttribute,\"toBeTranslatedEdges\");\n\n            // create link\n            org.moflon.util.eMoflonEMFUtil.addOppositeReference(match,blipModelAttribute,\"toBeTranslatedElements\");\n\n            // create link\n            blipModel__attributes__blipModelAttribute.setTrg( blipModelAttribute);\n\n\n            // create link\n            org.moflon.util.eMoflonEMFUtil.addOppositeReference(blipModel__attributes__blipModelAttribute,blipModel,\"src\");\n            fujaba__Success = true;\n         }\n         catch ( JavaSDMException fujaba__InternalException )\n         {\n            fujaba__Success = false;\n         }\n\n         // story node \'collect context elements\'\n         try \n         {\n            fujaba__Success = false; \n\n            // check object blipModel is really bound\n            JavaSDM.ensure ( blipModel != null );\n            // check object match is really bound\n            JavaSDM.ensure ( match != null );\n\n            // create link\n            org.moflon.util.eMoflonEMFUtil.addOppositeReference(match,blipModel,\"contextNodes\");\n            fujaba__Success = true;\n         }\n         catch ( JavaSDMException fujaba__InternalException )\n         {\n            fujaba__Success = false;\n         }\n\n         // statement node \'register objects to match\'\n         match.registerObject(\"blipModel\", blipModel);\n         match.registerObject(\"blipModelAttribute\", blipModelAttribute);\n\n         return true;\n\n      }\n      else\n      {\n         return false;\n\n      }'"
	 * @generated
	 */
	boolean isAppropriate_BWD(Match match, BlipModel blipModel,
			BlipModelAttribute blipModelAttribute);

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @model annotation="SDM XMI='<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<activities:Activity xmi:version=\"2.0\" xmlns:xmi=\"http://www.omg.org/XMI\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:TGGLanguage=\"http://www.moflon.org.TGGLanguage\" xmlns:activities=\"http://www.moflon.org.SDMLanguage.activities\" xmlns:csp=\"http://www.moflon.org.TGGLanguage.csp\" xmlns:ecore=\"http://www.eclipse.org/emf/2002/Ecore\" xmlns:expressions=\"http://www.moflon.org.SDMLanguage.expressions\" xmlns:patternExpressions=\"http://www.moflon.org.SDMLanguage.patterns.patternExpressions\">\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"core match\" outgoing=\"//@ownedActivityEdge.8\" incoming=\"//@ownedActivityEdge.2\">\r\n    <storyPattern xsi:type=\"TGGLanguage:TGGRule\" name=\"MModelAttributeToModelAttributeRule\" cspSpec=\"&#xD;&#xA;&#x9;&#x9;eq(modelAttributeNode.name, blipModelAttribute.name)&#xD;&#xA;&#x9;&#x9;eq(typeAttr.value, blipModelAttribute.type)&#xD;&#xA;&#x9;\">\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"blipModel\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/resource/BlipLanguage/model/BlipLanguage.ecore#//BlipModel\"/>\r\n        <bindingExpression xsi:type=\"expressions:LiteralExpression\" value=\"match.getObject(&quot;blipModel&quot;)\"/>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.1\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"blipModelAttribute\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/resource/BlipLanguage/model/BlipLanguage.ecore#//BlipModelAttribute\"/>\r\n        <bindingExpression xsi:type=\"expressions:LiteralExpression\" value=\"match.getObject(&quot;blipModelAttribute&quot;)\"/>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.1\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"match\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Match\"/>\r\n      </objectVariable>\r\n      <correspondence href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.2\"/>\r\n      <source href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      <csp>\r\n        <constraints variables=\"//@ownedActivityNode.0/@storyPattern/@csp/@variables.0 //@ownedActivityNode.0/@storyPattern/@csp/@variables.1\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <constraints variables=\"//@ownedActivityNode.0/@storyPattern/@csp/@variables.2 //@ownedActivityNode.0/@storyPattern/@csp/@variables.3\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"name\" objectVariable=\"modelAttributeNode\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"name\" objectVariable=\"blipModelAttribute\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"value\" objectVariable=\"typeAttr\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"type\" objectVariable=\"blipModelAttribute\"/>\r\n      </csp>\r\n      <target href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.1\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"prepare return value\" outgoing=\"//@ownedActivityEdge.2\" incoming=\"//@ownedActivityEdge.4\">\r\n    <storyPattern>\r\n      <objectVariable name=\"ruleresult\" outgoingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.1\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//IsApplicableRuleResult\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"http://www.moflon.org.TGGRuntime#//RuleResult/success\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"false\"/>\r\n        </attributeAssignment>\r\n        <attributeAssignment>\r\n          <attribute href=\"http://www.moflon.org.TGGRuntime#//RuleResult/rule\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;MModelAttributeToModelAttributeRule&quot;\"/>\r\n        </attributeAssignment>\r\n      </objectVariable>\r\n      <objectVariable name=\"performOperation\" incomingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.0 //@ownedActivityNode.1/@storyPattern/@linkVariable.1\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.eclipse.org/emf/2002/Ecore#//EOperation\"/>\r\n        <constraint>\r\n          <constraintExpression xsi:type=\"expressions:ComparisonExpression\" operator=\"EQUAL\">\r\n            <rightExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;perform_BWD&quot;\"/>\r\n            <leftExpression xsi:type=\"patternExpressions:AttributeValueExpression\" object=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.1\">\r\n              <attribute href=\"http://www.eclipse.org/emf/2002/Ecore#//ENamedElement/name\"/>\r\n            </leftExpression>\r\n          </constraintExpression>\r\n        </constraint>\r\n      </objectVariable>\r\n      <objectVariable name=\"eClass\" outgoingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.0\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.eclipse.org/emf/2002/Ecore#//EClass\"/>\r\n        <bindingExpression xsi:type=\"expressions:LiteralExpression\" value=\"this.eClass()\"/>\r\n      </objectVariable>\r\n      <linkVariable name=\"eOperations\" target=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.1\" source=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.2\"/>\r\n      <linkVariable name=\"performOperation\" target=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.1\" source=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.0\" bindingOperator=\"CREATE\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StopNode\" incoming=\"//@ownedActivityEdge.5\">\r\n    <returnValue xsi:type=\"patternExpressions:ObjectVariableExpression\" object=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.0\"/>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"find context\" outgoing=\"//@ownedActivityEdge.5 //@ownedActivityEdge.7\" incoming=\"//@ownedActivityEdge.0 //@ownedActivityEdge.3 //@ownedActivityEdge.8\" forEach=\"true\">\r\n    <storyPattern xsi:type=\"TGGLanguage:TGGRule\" name=\"MModelAttributeToModelAttributeRule\" cspSpec=\"&#xD;&#xA;&#x9;&#x9;eq(modelAttributeNode.name, blipModelAttribute.name)&#xD;&#xA;&#x9;&#x9;eq(typeAttr.value, blipModelAttribute.type)&#xD;&#xA;&#x9;\">\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"modelNode\" incomingLink=\"//@ownedActivityNode.3/@storyPattern/@linkVariable.0\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Node\"/>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"mModelToModel\" outgoingLink=\"//@ownedActivityNode.3/@storyPattern/@linkVariable.0 //@ownedActivityNode.3/@storyPattern/@linkVariable.1\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.BlipTGG#//MModelToModel\"/>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.2\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"blipModel\" incomingLink=\"//@ownedActivityNode.3/@storyPattern/@linkVariable.1\" outgoingLink=\"//@ownedActivityNode.3/@storyPattern/@linkVariable.2\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/resource/BlipLanguage/model/BlipLanguage.ecore#//BlipModel\"/>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.1\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"blipModelAttribute\" incomingLink=\"//@ownedActivityNode.3/@storyPattern/@linkVariable.2\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/resource/BlipLanguage/model/BlipLanguage.ecore#//BlipModelAttribute\"/>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.1\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"isApplicableMatch\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//IsApplicableMatch\"/>\r\n      </objectVariable>\r\n      <linkVariable xsi:type=\"TGGLanguage:TGGLinkVariable\" name=\"source\" target=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.0\" source=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.1\">\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.2\"/>\r\n      </linkVariable>\r\n      <linkVariable xsi:type=\"TGGLanguage:TGGLinkVariable\" name=\"target\" target=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.2\" source=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.1\">\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.2\"/>\r\n      </linkVariable>\r\n      <linkVariable xsi:type=\"TGGLanguage:TGGLinkVariable\" name=\"attributes\" target=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.3\" source=\"//@ownedActivityNode.3/@storyPattern/@objectVariable.2\">\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.1\"/>\r\n      </linkVariable>\r\n      <correspondence href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.2\"/>\r\n      <source href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      <csp>\r\n        <constraints variables=\"//@ownedActivityNode.3/@storyPattern/@csp/@variables.0 //@ownedActivityNode.3/@storyPattern/@csp/@variables.1\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <constraints variables=\"//@ownedActivityNode.3/@storyPattern/@csp/@variables.2 //@ownedActivityNode.3/@storyPattern/@csp/@variables.3\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"name\" objectVariable=\"modelAttributeNode\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"name\" objectVariable=\"blipModelAttribute\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"value\" objectVariable=\"typeAttr\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"type\" objectVariable=\"blipModelAttribute\"/>\r\n      </csp>\r\n      <target href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.1\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"add match to rule result\" outgoing=\"//@ownedActivityEdge.3\" incoming=\"//@ownedActivityEdge.6\">\r\n    <storyPattern>\r\n      <objectVariable name=\"isApplicableMatch\" incomingLink=\"//@ownedActivityNode.4/@storyPattern/@linkVariable.0\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//IsApplicableMatch\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"ruleresult\" outgoingLink=\"//@ownedActivityNode.4/@storyPattern/@linkVariable.0\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//IsApplicableRuleResult\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"http://www.moflon.org.TGGRuntime#//RuleResult/success\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"true\"/>\r\n        </attributeAssignment>\r\n      </objectVariable>\r\n      <linkVariable name=\"isApplicableMatch\" target=\"//@ownedActivityNode.4/@storyPattern/@objectVariable.0\" source=\"//@ownedActivityNode.4/@storyPattern/@objectVariable.1\" bindingOperator=\"CREATE\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StatementNode\" name=\"check CSP\" outgoing=\"//@ownedActivityEdge.0 //@ownedActivityEdge.6\" incoming=\"//@ownedActivityEdge.1\">\r\n    <statementExpression xsi:type=\"expressions:LiteralExpression\" value=\"csp.check();\"/>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StatementNode\" name=\"solve CSP\" outgoing=\"//@ownedActivityEdge.1\" incoming=\"//@ownedActivityEdge.7\">\r\n    <statementExpression xsi:type=\"expressions:LiteralExpression\" value=\"// Create CSP&#xD;&#xA;CSP csp = CspFactory.eINSTANCE.createCSP();&#xD;&#xA;isApplicableMatch.getAttributeInfo().add(csp);&#xD;&#xA;&#xD;&#xA;// Create literals&#xD;&#xA;&#xD;&#xA;// Create attribute variables&#xD;&#xA;Variable&lt;String> var_blipModelAttribute_name = CspFactory.eINSTANCE.createVariable(&quot;blipModelAttribute.name&quot;, true, csp);&#xD;&#xA;var_blipModelAttribute_name.setValue(blipModelAttribute.getName());&#xD;&#xA;Variable&lt;String> var_blipModelAttribute_type = CspFactory.eINSTANCE.createVariable(&quot;blipModelAttribute.type&quot;, true, csp);&#xD;&#xA;var_blipModelAttribute_type.setValue(blipModelAttribute.getType());&#xD;&#xA;&#xD;&#xA;// Create explicit parameters&#xD;&#xA;&#xD;&#xA;// Create unbound variables&#xD;&#xA;Variable&lt;String> var_modelAttributeNode_name = CspFactory.eINSTANCE.createVariable(&quot;modelAttributeNode.name&quot;, csp);&#xD;&#xA;Variable&lt;String> var_typeAttr_value = CspFactory.eINSTANCE.createVariable(&quot;typeAttr.value&quot;, csp);&#xD;&#xA;&#xD;&#xA;// Create constraints&#xD;&#xA;Eq&lt;String> eq = new Eq&lt;String>();Eq&lt;String> eq_0 = new Eq&lt;String>();&#xD;&#xA;&#xD;&#xA;csp.getConstraints().add(eq);&#xD;&#xA;csp.getConstraints().add(eq_0);&#xD;&#xA;&#xD;&#xA;// Solve CSP&#xD;&#xA;eq.setRuleName(&quot;&quot;);&#xD;&#xA;eq.solve(var_modelAttributeNode_name,var_blipModelAttribute_name);&#xD;&#xA;eq_0.setRuleName(&quot;&quot;);&#xD;&#xA;eq_0.solve(var_typeAttr_value,var_blipModelAttribute_type);&#xD;&#xA;&#xD;&#xA;// Snapshot pattern match on which CSP is solved&#xD;&#xA;isApplicableMatch.registerObject(&quot;modelNode&quot;,modelNode);&#xD;&#xA;isApplicableMatch.registerObject(&quot;mModelToModel&quot;,mModelToModel);&#xD;&#xA;isApplicableMatch.registerObject(&quot;blipModel&quot;,blipModel);&#xD;&#xA;isApplicableMatch.registerObject(&quot;blipModelAttribute&quot;,blipModelAttribute);&#xD;&#xA;\"/>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StartNode\" outgoing=\"//@ownedActivityEdge.4\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.5\" target=\"//@ownedActivityNode.3\" guard=\"FAILURE\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.6\" target=\"//@ownedActivityNode.5\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.1\" target=\"//@ownedActivityNode.0\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.4\" target=\"//@ownedActivityNode.3\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.7\" target=\"//@ownedActivityNode.1\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.3\" target=\"//@ownedActivityNode.2\" guard=\"END\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.5\" target=\"//@ownedActivityNode.4\" guard=\"SUCCESS\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.3\" target=\"//@ownedActivityNode.6\" guard=\"EACH_TIME\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.0\" target=\"//@ownedActivityNode.3\"/>\r\n</activities:Activity>\r\n'"
	 *        annotation="http://www.eclipse.org/emf/2002/GenModel body='boolean fujaba__Success = false;\n      Object _TmpObject = null;\n      EClass eClass = null;\n      Iterator fujaba__IterEClassToPerformOperation = null;\n      EOperation performOperation = null;\n      IsApplicableRuleResult ruleresult = null;\n      BlipModel blipModel = null;\n      BlipModelAttribute blipModelAttribute = null;\n      IsApplicableMatch isApplicableMatch = null;\n      Node modelNode = null;\n      Iterator fujaba__IterBlipModelToMModelToModel = null;\n      MModelToModel mModelToModel = null;\n\n      // story node \'prepare return value\'\n      try \n      {\n         fujaba__Success = false; \n\n         _TmpObject = (this.eClass());\n\n         // ensure correct type and really bound of object eClass\n         JavaSDM.ensure ( _TmpObject instanceof EClass );\n         eClass = (EClass) _TmpObject;\n         // iterate to-many link eOperations from eClass to performOperation\n         fujaba__Success = false;\n\n         fujaba__IterEClassToPerformOperation = eClass.getEOperations().iterator ();\n\n         while ( !(fujaba__Success) && fujaba__IterEClassToPerformOperation.hasNext () )\n         {\n            try\n            {\n               performOperation = (EOperation) fujaba__IterEClassToPerformOperation.next ();\n\n               // check object performOperation is really bound\n               JavaSDM.ensure ( performOperation != null );\n               // attribute condition\n               JavaSDM.ensure ( JavaSDM.stringCompare (performOperation.getName (), \"perform_BWD\") == 0 );\n\n\n               fujaba__Success = true;\n            }\n            catch ( JavaSDMException fujaba__InternalException )\n            {\n               fujaba__Success = false;\n            }\n         }\n         JavaSDM.ensure (fujaba__Success);\n         // create object ruleresult\n         ruleresult = TGGRuntimeFactory.eINSTANCE.createIsApplicableRuleResult();\n\n         // assign attribute ruleresult\n         ruleresult.setSuccess (false);\n         // assign attribute ruleresult\n         ruleresult.setRule (\"MModelAttributeToModelAttributeRule\");\n\n         // create link\n         org.moflon.util.eMoflonEMFUtil.addOppositeReference(ruleresult,performOperation,\"performOperation\");\n         fujaba__Success = true;\n      }\n      catch ( JavaSDMException fujaba__InternalException )\n      {\n         fujaba__Success = false;\n      }\n\n      // story node \'core match\'\n      try \n      {\n         fujaba__Success = false; \n\n         _TmpObject = (match.getObject(\"blipModel\"));\n\n         // ensure correct type and really bound of object blipModel\n         JavaSDM.ensure ( _TmpObject instanceof BlipModel );\n         blipModel = (BlipModel) _TmpObject;\n         _TmpObject = (match.getObject(\"blipModelAttribute\"));\n\n         // ensure correct type and really bound of object blipModelAttribute\n         JavaSDM.ensure ( _TmpObject instanceof BlipModelAttribute );\n         blipModelAttribute = (BlipModelAttribute) _TmpObject;\n         // check object match is really bound\n         JavaSDM.ensure ( match != null );\n         fujaba__Success = true;\n      }\n      catch ( JavaSDMException fujaba__InternalException )\n      {\n         fujaba__Success = false;\n      }\n\n      // story node \'find context\'\n      try \n      {\n         fujaba__Success = false; \n\n         // check object blipModel is really bound\n         JavaSDM.ensure ( blipModel != null );\n         // check object blipModelAttribute is really bound\n         JavaSDM.ensure ( blipModelAttribute != null );\n         // check link attributes from blipModelAttribute to blipModel\n         JavaSDM.ensure (blipModel.equals (blipModelAttribute.eContainer()\n         ));\n\n         // iterate to-many link target from blipModel to mModelToModel\n         fujaba__Success = false;\n\n         fujaba__IterBlipModelToMModelToModel = new ArrayList(org.moflon.util.eMoflonEMFUtil.getOppositeReference(blipModel,MModelToModel.class,\"target\")).iterator ();\n\n         while ( fujaba__IterBlipModelToMModelToModel.hasNext () )\n         {\n            try\n            {\n               mModelToModel = (MModelToModel) fujaba__IterBlipModelToMModelToModel.next ();\n\n               // check object mModelToModel is really bound\n               JavaSDM.ensure ( mModelToModel != null );\n               // bind object\n               modelNode = mModelToModel.getSource ();\n\n               // check object modelNode is really bound\n               JavaSDM.ensure ( modelNode != null );\n\n               // create object isApplicableMatch\n               isApplicableMatch = TGGRuntimeFactory.eINSTANCE.createIsApplicableMatch();\n\n               // statement node \'solve CSP\'\n               // Create CSP\n               CSP csp = CspFactory.eINSTANCE.createCSP();\n               isApplicableMatch.getAttributeInfo().add(csp);\n\n               // Create literals\n\n               // Create attribute variables\n               Variable<String> var_blipModelAttribute_name = CspFactory.eINSTANCE.createVariable(\"blipModelAttribute.name\", true, csp);\n               var_blipModelAttribute_name.setValue(blipModelAttribute.getName());\n               Variable<String> var_blipModelAttribute_type = CspFactory.eINSTANCE.createVariable(\"blipModelAttribute.type\", true, csp);\n               var_blipModelAttribute_type.setValue(blipModelAttribute.getType());\n\n               // Create explicit parameters\n\n               // Create unbound variables\n               Variable<String> var_modelAttributeNode_name = CspFactory.eINSTANCE.createVariable(\"modelAttributeNode.name\", csp);\n               Variable<String> var_typeAttr_value = CspFactory.eINSTANCE.createVariable(\"typeAttr.value\", csp);\n\n               // Create constraints\n               Eq<String> eq = new Eq<String>();Eq<String> eq_0 = new Eq<String>();\n\n               csp.getConstraints().add(eq);\n               csp.getConstraints().add(eq_0);\n\n               // Solve CSP\n               eq.setRuleName(\"\");\n               eq.solve(var_modelAttributeNode_name,var_blipModelAttribute_name);\n               eq_0.setRuleName(\"\");\n               eq_0.solve(var_typeAttr_value,var_blipModelAttribute_type);\n\n               // Snapshot pattern match on which CSP is solved\n               isApplicableMatch.registerObject(\"modelNode\",modelNode);\n               isApplicableMatch.registerObject(\"mModelToModel\",mModelToModel);\n               isApplicableMatch.registerObject(\"blipModel\",blipModel);\n               isApplicableMatch.registerObject(\"blipModelAttribute\",blipModelAttribute);\n\n               // statement node \'check CSP\'\n               fujaba__Success = csp.check();\n               if (fujaba__Success)\n               {\n                  // story node \'add match to rule result\'\n                  try \n                  {\n                     fujaba__Success = false; \n\n                     // check object isApplicableMatch is really bound\n                     JavaSDM.ensure ( isApplicableMatch != null );\n                     // check object ruleresult is really bound\n                     JavaSDM.ensure ( ruleresult != null );\n                     // assign attribute ruleresult\n                     ruleresult.setSuccess (true);\n\n                     // create link\n                     ruleresult.getIsApplicableMatch().add(isApplicableMatch);\n\n                     fujaba__Success = true;\n                  }\n                  catch ( JavaSDMException fujaba__InternalException )\n                  {\n                     fujaba__Success = false;\n                  }\n\n\n               }\n               else\n               {\n\n               }\n\n\n               fujaba__Success = true;\n            }\n            catch ( JavaSDMException fujaba__InternalException )\n            {\n               fujaba__Success = false;\n            }\n         }\n         JavaSDM.ensure (fujaba__Success);\n         fujaba__Success = true;\n      }\n      catch ( JavaSDMException fujaba__InternalException )\n      {\n         fujaba__Success = false;\n      }\n\n      return ruleresult;'"
	 * @generated
	 */
	IsApplicableRuleResult isApplicable_BWD(Match match);

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @model annotation="SDM XMI='<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<activities:Activity xmi:version=\"2.0\" xmlns:xmi=\"http://www.omg.org/XMI\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:TGGLanguage=\"http://www.moflon.org.TGGLanguage\" xmlns:activities=\"http://www.moflon.org.SDMLanguage.activities\" xmlns:callExpressions=\"http://www.moflon.org.SDMLanguage.calls.callExpressions\" xmlns:csp=\"http://www.moflon.org.TGGLanguage.csp\" xmlns:ecore=\"http://www.eclipse.org/emf/2002/Ecore\" xmlns:expressions=\"http://www.moflon.org.SDMLanguage.expressions\" xmlns:patternExpressions=\"http://www.moflon.org.SDMLanguage.patterns.patternExpressions\">\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"prepare return value\" outgoing=\"//@ownedActivityEdge.4\" incoming=\"//@ownedActivityEdge.0\">\r\n    <storyPattern>\r\n      <objectVariable name=\"performOperation\" incomingLink=\"//@ownedActivityNode.0/@storyPattern/@linkVariable.1 //@ownedActivityNode.0/@storyPattern/@linkVariable.0\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.eclipse.org/emf/2002/Ecore#//EOperation\"/>\r\n        <constraint>\r\n          <constraintExpression xsi:type=\"expressions:ComparisonExpression\" operator=\"EQUAL\">\r\n            <rightExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;isApplicable_FWD&quot;\"/>\r\n            <leftExpression xsi:type=\"patternExpressions:AttributeValueExpression\" object=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.0\">\r\n              <attribute href=\"http://www.eclipse.org/emf/2002/Ecore#//ENamedElement/name\"/>\r\n            </leftExpression>\r\n          </constraintExpression>\r\n        </constraint>\r\n      </objectVariable>\r\n      <objectVariable name=\"this\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.BlipTGG#//Rules/MModelAttributeToModelAttributeRule\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"ruleresult\" outgoingLink=\"//@ownedActivityNode.0/@storyPattern/@linkVariable.0\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//IsAppropriateRuleResult\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"http://www.moflon.org.TGGRuntime#//RuleResult/success\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"false\"/>\r\n        </attributeAssignment>\r\n      </objectVariable>\r\n      <objectVariable name=\"eClass\" outgoingLink=\"//@ownedActivityNode.0/@storyPattern/@linkVariable.1\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.eclipse.org/emf/2002/Ecore#//EClass\"/>\r\n        <bindingExpression xsi:type=\"expressions:LiteralExpression\" value=\"this.eClass()\"/>\r\n      </objectVariable>\r\n      <linkVariable name=\"performOperation\" target=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.0\" source=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.2\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"eOperations\" target=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.0\" source=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.3\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"test core match\" outgoing=\"//@ownedActivityEdge.3 //@ownedActivityEdge.1\" incoming=\"//@ownedActivityEdge.4 //@ownedActivityEdge.5 //@ownedActivityEdge.7\" forEach=\"true\">\r\n    <storyPattern xsi:type=\"TGGLanguage:TGGRule\" name=\"MModelAttributeToModelAttributeRule\" cspSpec=\"&#xD;&#xA;&#x9;&#x9;eq(modelAttributeNode.name, blipModelAttribute.name)&#xD;&#xA;&#x9;&#x9;eq(typeAttr.value, blipModelAttribute.type)&#xD;&#xA;&#x9;\">\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"modelNode\" incomingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.0\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Node\"/>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"modelAttributeNode\" outgoingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.0 //@ownedActivityNode.1/@storyPattern/@linkVariable.1\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Node\"/>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"typeAttr\" incomingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.1\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Attribute\"/>\r\n        <constraint>\r\n          <constraintExpression xsi:type=\"expressions:ComparisonExpression\" operator=\"EQUAL\">\r\n            <rightExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;type&quot;\"/>\r\n            <leftExpression xsi:type=\"patternExpressions:AttributeValueExpression\">\r\n              <attribute href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//TreeElement/name\"/>\r\n            </leftExpression>\r\n          </constraintExpression>\r\n        </constraint>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"ruleresult\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//IsAppropriateRuleResult\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"match\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Match\"/>\r\n      </objectVariable>\r\n      <linkVariable xsi:type=\"TGGLanguage:TGGLinkVariable\" name=\"parentNode\" target=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.0\" source=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.1\">\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </linkVariable>\r\n      <linkVariable xsi:type=\"TGGLanguage:TGGLinkVariable\" name=\"attribute\" target=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.2\" source=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.1\">\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </linkVariable>\r\n      <correspondence href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.2\"/>\r\n      <source href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      <csp>\r\n        <constraints variables=\"//@ownedActivityNode.1/@storyPattern/@csp/@variables.0 //@ownedActivityNode.1/@storyPattern/@csp/@variables.1\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <constraints variables=\"//@ownedActivityNode.1/@storyPattern/@csp/@variables.2 //@ownedActivityNode.1/@storyPattern/@csp/@variables.3\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"name\" objectVariable=\"modelAttributeNode\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"name\" objectVariable=\"blipModelAttribute\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"value\" objectVariable=\"typeAttr\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"type\" objectVariable=\"blipModelAttribute\"/>\r\n      </csp>\r\n      <target href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.1\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"set success\" outgoing=\"//@ownedActivityEdge.2\" incoming=\"//@ownedActivityEdge.3\">\r\n    <storyPattern>\r\n      <objectVariable name=\"match\" incomingLink=\"//@ownedActivityNode.2/@storyPattern/@linkVariable.0\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Match\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"ruleresult\" outgoingLink=\"//@ownedActivityNode.2/@storyPattern/@linkVariable.0\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//IsAppropriateRuleResult\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"http://www.moflon.org.TGGRuntime#//RuleResult/success\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"true\"/>\r\n        </attributeAssignment>\r\n      </objectVariable>\r\n      <linkVariable name=\"matches\" target=\"//@ownedActivityNode.2/@storyPattern/@objectVariable.0\" source=\"//@ownedActivityNode.2/@storyPattern/@objectVariable.1\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StopNode\" incoming=\"//@ownedActivityEdge.2\">\r\n    <returnValue xsi:type=\"patternExpressions:ObjectVariableExpression\" object=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.2\"/>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StartNode\" outgoing=\"//@ownedActivityEdge.0\"/>\r\n  <ownedActivityNode xsi:type=\"activities:StatementNode\" name=\"bookkeeping with generic isAppropriate method\" outgoing=\"//@ownedActivityEdge.5 //@ownedActivityEdge.6\" incoming=\"//@ownedActivityEdge.1\">\r\n    <statementExpression xsi:type=\"callExpressions:MethodCallExpression\">\r\n      <ownedParameterBindings>\r\n        <valueExpression xsi:type=\"expressions:TextualExpression\" expressionText=\"match\"/>\r\n        <parameter href=\"http://www.moflon.org.BlipTGG#//Rules/MModelAttributeToModelAttributeRule/isAppropriate_FWD/match\"/>\r\n      </ownedParameterBindings>\r\n      <ownedParameterBindings>\r\n        <valueExpression xsi:type=\"expressions:TextualExpression\" expressionText=\"modelNode\"/>\r\n        <parameter href=\"http://www.moflon.org.BlipTGG#//Rules/MModelAttributeToModelAttributeRule/isAppropriate_FWD/modelNode\"/>\r\n      </ownedParameterBindings>\r\n      <ownedParameterBindings>\r\n        <valueExpression xsi:type=\"expressions:TextualExpression\" expressionText=\"modelAttributeNode\"/>\r\n        <parameter href=\"http://www.moflon.org.BlipTGG#//Rules/MModelAttributeToModelAttributeRule/isAppropriate_FWD/modelAttributeNode\"/>\r\n      </ownedParameterBindings>\r\n      <ownedParameterBindings>\r\n        <valueExpression xsi:type=\"expressions:TextualExpression\" expressionText=\"typeAttr\"/>\r\n        <parameter href=\"http://www.moflon.org.BlipTGG#//Rules/MModelAttributeToModelAttributeRule/isAppropriate_FWD/typeAttr\"/>\r\n      </ownedParameterBindings>\r\n      <callee href=\"http://www.moflon.org.BlipTGG#//Rules/MModelAttributeToModelAttributeRule/isAppropriate_FWD\"/>\r\n      <target xsi:type=\"patternExpressions:ObjectVariableExpression\" object=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.1\"/>\r\n    </statementExpression>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"Add match to rule result\" outgoing=\"//@ownedActivityEdge.7\" incoming=\"//@ownedActivityEdge.6\">\r\n    <storyPattern>\r\n      <objectVariable name=\"match\" incomingLink=\"//@ownedActivityNode.6/@storyPattern/@linkVariable.0\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Match\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"ruleresult\" outgoingLink=\"//@ownedActivityNode.6/@storyPattern/@linkVariable.0\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//IsAppropriateRuleResult\"/>\r\n      </objectVariable>\r\n      <linkVariable name=\"matches\" target=\"//@ownedActivityNode.6/@storyPattern/@objectVariable.0\" source=\"//@ownedActivityNode.6/@storyPattern/@objectVariable.1\" bindingOperator=\"CREATE\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.4\" target=\"//@ownedActivityNode.0\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.1\" target=\"//@ownedActivityNode.5\" guard=\"EACH_TIME\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.2\" target=\"//@ownedActivityNode.3\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.1\" target=\"//@ownedActivityNode.2\" guard=\"END\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.0\" target=\"//@ownedActivityNode.1\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.5\" target=\"//@ownedActivityNode.1\" guard=\"FAILURE\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.5\" target=\"//@ownedActivityNode.6\" guard=\"SUCCESS\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.6\" target=\"//@ownedActivityNode.1\"/>\r\n</activities:Activity>\r\n'"
	 *        annotation="http://www.eclipse.org/emf/2002/GenModel body='boolean fujaba__Success = false;\n      Object _TmpObject = null;\n      EClass eClass = null;\n      Iterator fujaba__IterEClassToPerformOperation = null;\n      EOperation performOperation = null;\n      IsAppropriateRuleResult ruleresult = null;\n      Match match = null;\n      Iterator fujaba__IterModelAttributeNodeToTypeAttr = null;\n      Attribute typeAttr = null;\n      Iterator fujaba__IterModelNodeToModelAttributeNode = null;\n      Node modelAttributeNode = null;\n      Iterator fujaba__IterRuleresultToMatch = null;\n\n      // story node \'prepare return value\'\n      try \n      {\n         fujaba__Success = false; \n\n         _TmpObject = (this.eClass());\n\n         // ensure correct type and really bound of object eClass\n         JavaSDM.ensure ( _TmpObject instanceof EClass );\n         eClass = (EClass) _TmpObject;\n         // iterate to-many link eOperations from eClass to performOperation\n         fujaba__Success = false;\n\n         fujaba__IterEClassToPerformOperation = eClass.getEOperations().iterator ();\n\n         while ( !(fujaba__Success) && fujaba__IterEClassToPerformOperation.hasNext () )\n         {\n            try\n            {\n               performOperation = (EOperation) fujaba__IterEClassToPerformOperation.next ();\n\n               // check object performOperation is really bound\n               JavaSDM.ensure ( performOperation != null );\n               // attribute condition\n               JavaSDM.ensure ( JavaSDM.stringCompare (performOperation.getName (), \"isApplicable_FWD\") == 0 );\n\n\n               fujaba__Success = true;\n            }\n            catch ( JavaSDMException fujaba__InternalException )\n            {\n               fujaba__Success = false;\n            }\n         }\n         JavaSDM.ensure (fujaba__Success);\n         // create object ruleresult\n         ruleresult = TGGRuntimeFactory.eINSTANCE.createIsAppropriateRuleResult();\n\n         // assign attribute ruleresult\n         ruleresult.setSuccess (false);\n\n         // create link\n         ruleresult.setPerformOperation( performOperation);\n\n         fujaba__Success = true;\n      }\n      catch ( JavaSDMException fujaba__InternalException )\n      {\n         fujaba__Success = false;\n      }\n\n      // story node \'test core match\'\n      try \n      {\n         fujaba__Success = false; \n\n         // check object modelNode is really bound\n         JavaSDM.ensure ( modelNode != null );\n         // check object ruleresult is really bound\n         JavaSDM.ensure ( ruleresult != null );\n         // iterate to-many link children from modelNode to modelAttributeNode\n         fujaba__Success = false;\n\n         fujaba__IterModelNodeToModelAttributeNode = new ArrayList(modelNode.getChildren()).iterator ();\n\n         while ( fujaba__IterModelNodeToModelAttributeNode.hasNext () )\n         {\n            try\n            {\n               _TmpObject =  fujaba__IterModelNodeToModelAttributeNode.next ();\n\n               // ensure correct type and really bound of object modelAttributeNode\n               JavaSDM.ensure ( _TmpObject instanceof Node );\n               modelAttributeNode = (Node) _TmpObject;\n               // check isomorphic binding between objects modelNode and modelAttributeNode \n               JavaSDM.ensure ( !modelNode.equals (modelAttributeNode) );\n\n               // iterate to-many link attribute from modelAttributeNode to typeAttr\n               fujaba__Success = false;\n\n               fujaba__IterModelAttributeNodeToTypeAttr = new ArrayList(modelAttributeNode.getAttribute()).iterator ();\n\n               while ( fujaba__IterModelAttributeNodeToTypeAttr.hasNext () )\n               {\n                  try\n                  {\n                     typeAttr = (Attribute) fujaba__IterModelAttributeNodeToTypeAttr.next ();\n\n                     // check object typeAttr is really bound\n                     JavaSDM.ensure ( typeAttr != null );\n                     // attribute condition\n                     JavaSDM.ensure ( JavaSDM.stringCompare (typeAttr.getName (), \"type\") == 0 );\n\n                     // create object match\n                     match = TGGRuntimeFactory.eINSTANCE.createMatch();\n\n                     // statement node \'bookkeeping with generic isAppropriate method\'\n                     fujaba__Success = this.isAppropriate_FWD(match,modelNode,modelAttributeNode,typeAttr);\n                     if (fujaba__Success)\n                     {\n                        // story node \'Add match to rule result\'\n                        try \n                        {\n                           fujaba__Success = false; \n\n                           // check object match is really bound\n                           JavaSDM.ensure ( match != null );\n                           // check object ruleresult is really bound\n                           JavaSDM.ensure ( ruleresult != null );\n\n                           // create link\n                           ruleresult.getMatches().add(match);\n\n                           fujaba__Success = true;\n                        }\n                        catch ( JavaSDMException fujaba__InternalException )\n                        {\n                           fujaba__Success = false;\n                        }\n\n\n                     }\n                     else\n                     {\n\n                     }\n\n                     fujaba__Success = true;\n                  }\n                  catch ( JavaSDMException fujaba__InternalException )\n                  {\n                     fujaba__Success = false;\n                  }\n               }\n               JavaSDM.ensure (fujaba__Success);\n\n               fujaba__Success = true;\n            }\n            catch ( JavaSDMException fujaba__InternalException )\n            {\n               fujaba__Success = false;\n            }\n         }\n         JavaSDM.ensure (fujaba__Success);\n         fujaba__Success = true;\n      }\n      catch ( JavaSDMException fujaba__InternalException )\n      {\n         fujaba__Success = false;\n      }\n\n      // story node \'set success\'\n      try \n      {\n         fujaba__Success = false; \n\n         // check object ruleresult is really bound\n         JavaSDM.ensure ( ruleresult != null );\n         // iterate to-many link matches from ruleresult to match\n         fujaba__Success = false;\n\n         fujaba__IterRuleresultToMatch = ruleresult.getMatches().iterator ();\n\n         while ( !(fujaba__Success) && fujaba__IterRuleresultToMatch.hasNext () )\n         {\n            try\n            {\n               match = (Match) fujaba__IterRuleresultToMatch.next ();\n\n               // check object match is really bound\n               JavaSDM.ensure ( match != null );\n\n               fujaba__Success = true;\n            }\n            catch ( JavaSDMException fujaba__InternalException )\n            {\n               fujaba__Success = false;\n            }\n         }\n         JavaSDM.ensure (fujaba__Success);\n         // assign attribute ruleresult\n         ruleresult.setSuccess (true);\n         fujaba__Success = true;\n      }\n      catch ( JavaSDMException fujaba__InternalException )\n      {\n         fujaba__Success = false;\n      }\n\n      return ruleresult;'"
	 * @generated
	 */
	IsAppropriateRuleResult isAppropriate_FWD_Node_1(Node modelNode);

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @model annotation="SDM XMI='<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<activities:Activity xmi:version=\"2.0\" xmlns:xmi=\"http://www.omg.org/XMI\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:TGGLanguage=\"http://www.moflon.org.TGGLanguage\" xmlns:activities=\"http://www.moflon.org.SDMLanguage.activities\" xmlns:callExpressions=\"http://www.moflon.org.SDMLanguage.calls.callExpressions\" xmlns:csp=\"http://www.moflon.org.TGGLanguage.csp\" xmlns:ecore=\"http://www.eclipse.org/emf/2002/Ecore\" xmlns:expressions=\"http://www.moflon.org.SDMLanguage.expressions\" xmlns:patternExpressions=\"http://www.moflon.org.SDMLanguage.patterns.patternExpressions\">\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"prepare return value\" outgoing=\"//@ownedActivityEdge.4\" incoming=\"//@ownedActivityEdge.0\">\r\n    <storyPattern>\r\n      <objectVariable name=\"performOperation\" incomingLink=\"//@ownedActivityNode.0/@storyPattern/@linkVariable.1 //@ownedActivityNode.0/@storyPattern/@linkVariable.0\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.eclipse.org/emf/2002/Ecore#//EOperation\"/>\r\n        <constraint>\r\n          <constraintExpression xsi:type=\"expressions:ComparisonExpression\" operator=\"EQUAL\">\r\n            <rightExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;isApplicable_FWD&quot;\"/>\r\n            <leftExpression xsi:type=\"patternExpressions:AttributeValueExpression\" object=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.0\">\r\n              <attribute href=\"http://www.eclipse.org/emf/2002/Ecore#//ENamedElement/name\"/>\r\n            </leftExpression>\r\n          </constraintExpression>\r\n        </constraint>\r\n      </objectVariable>\r\n      <objectVariable name=\"this\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.BlipTGG#//Rules/MModelAttributeToModelAttributeRule\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"ruleresult\" outgoingLink=\"//@ownedActivityNode.0/@storyPattern/@linkVariable.0\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//IsAppropriateRuleResult\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"http://www.moflon.org.TGGRuntime#//RuleResult/success\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"false\"/>\r\n        </attributeAssignment>\r\n      </objectVariable>\r\n      <objectVariable name=\"eClass\" outgoingLink=\"//@ownedActivityNode.0/@storyPattern/@linkVariable.1\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.eclipse.org/emf/2002/Ecore#//EClass\"/>\r\n        <bindingExpression xsi:type=\"expressions:LiteralExpression\" value=\"this.eClass()\"/>\r\n      </objectVariable>\r\n      <linkVariable name=\"performOperation\" target=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.0\" source=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.2\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"eOperations\" target=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.0\" source=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.3\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"test core match\" outgoing=\"//@ownedActivityEdge.3 //@ownedActivityEdge.1\" incoming=\"//@ownedActivityEdge.4 //@ownedActivityEdge.5 //@ownedActivityEdge.7\" forEach=\"true\">\r\n    <storyPattern xsi:type=\"TGGLanguage:TGGRule\" name=\"MModelAttributeToModelAttributeRule\" cspSpec=\"&#xD;&#xA;&#x9;&#x9;eq(modelAttributeNode.name, blipModelAttribute.name)&#xD;&#xA;&#x9;&#x9;eq(typeAttr.value, blipModelAttribute.type)&#xD;&#xA;&#x9;\">\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"modelNode\" incomingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.0\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Node\"/>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"modelAttributeNode\" outgoingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.0 //@ownedActivityNode.1/@storyPattern/@linkVariable.1\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Node\"/>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"typeAttr\" incomingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.1\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Attribute\"/>\r\n        <constraint>\r\n          <constraintExpression xsi:type=\"expressions:ComparisonExpression\" operator=\"EQUAL\">\r\n            <rightExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;type&quot;\"/>\r\n            <leftExpression xsi:type=\"patternExpressions:AttributeValueExpression\">\r\n              <attribute href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//TreeElement/name\"/>\r\n            </leftExpression>\r\n          </constraintExpression>\r\n        </constraint>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"ruleresult\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//IsAppropriateRuleResult\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"match\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Match\"/>\r\n      </objectVariable>\r\n      <linkVariable xsi:type=\"TGGLanguage:TGGLinkVariable\" name=\"parentNode\" target=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.0\" source=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.1\">\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </linkVariable>\r\n      <linkVariable xsi:type=\"TGGLanguage:TGGLinkVariable\" name=\"attribute\" target=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.2\" source=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.1\">\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </linkVariable>\r\n      <correspondence href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.2\"/>\r\n      <source href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      <csp>\r\n        <constraints variables=\"//@ownedActivityNode.1/@storyPattern/@csp/@variables.0 //@ownedActivityNode.1/@storyPattern/@csp/@variables.1\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <constraints variables=\"//@ownedActivityNode.1/@storyPattern/@csp/@variables.2 //@ownedActivityNode.1/@storyPattern/@csp/@variables.3\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"name\" objectVariable=\"modelAttributeNode\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"name\" objectVariable=\"blipModelAttribute\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"value\" objectVariable=\"typeAttr\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"type\" objectVariable=\"blipModelAttribute\"/>\r\n      </csp>\r\n      <target href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.1\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"set success\" outgoing=\"//@ownedActivityEdge.2\" incoming=\"//@ownedActivityEdge.3\">\r\n    <storyPattern>\r\n      <objectVariable name=\"match\" incomingLink=\"//@ownedActivityNode.2/@storyPattern/@linkVariable.0\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Match\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"ruleresult\" outgoingLink=\"//@ownedActivityNode.2/@storyPattern/@linkVariable.0\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//IsAppropriateRuleResult\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"http://www.moflon.org.TGGRuntime#//RuleResult/success\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"true\"/>\r\n        </attributeAssignment>\r\n      </objectVariable>\r\n      <linkVariable name=\"matches\" target=\"//@ownedActivityNode.2/@storyPattern/@objectVariable.0\" source=\"//@ownedActivityNode.2/@storyPattern/@objectVariable.1\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StopNode\" incoming=\"//@ownedActivityEdge.2\">\r\n    <returnValue xsi:type=\"patternExpressions:ObjectVariableExpression\" object=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.2\"/>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StartNode\" outgoing=\"//@ownedActivityEdge.0\"/>\r\n  <ownedActivityNode xsi:type=\"activities:StatementNode\" name=\"bookkeeping with generic isAppropriate method\" outgoing=\"//@ownedActivityEdge.5 //@ownedActivityEdge.6\" incoming=\"//@ownedActivityEdge.1\">\r\n    <statementExpression xsi:type=\"callExpressions:MethodCallExpression\">\r\n      <ownedParameterBindings>\r\n        <valueExpression xsi:type=\"expressions:TextualExpression\" expressionText=\"match\"/>\r\n        <parameter href=\"http://www.moflon.org.BlipTGG#//Rules/MModelAttributeToModelAttributeRule/isAppropriate_FWD/match\"/>\r\n      </ownedParameterBindings>\r\n      <ownedParameterBindings>\r\n        <valueExpression xsi:type=\"expressions:TextualExpression\" expressionText=\"modelNode\"/>\r\n        <parameter href=\"http://www.moflon.org.BlipTGG#//Rules/MModelAttributeToModelAttributeRule/isAppropriate_FWD/modelNode\"/>\r\n      </ownedParameterBindings>\r\n      <ownedParameterBindings>\r\n        <valueExpression xsi:type=\"expressions:TextualExpression\" expressionText=\"modelAttributeNode\"/>\r\n        <parameter href=\"http://www.moflon.org.BlipTGG#//Rules/MModelAttributeToModelAttributeRule/isAppropriate_FWD/modelAttributeNode\"/>\r\n      </ownedParameterBindings>\r\n      <ownedParameterBindings>\r\n        <valueExpression xsi:type=\"expressions:TextualExpression\" expressionText=\"typeAttr\"/>\r\n        <parameter href=\"http://www.moflon.org.BlipTGG#//Rules/MModelAttributeToModelAttributeRule/isAppropriate_FWD/typeAttr\"/>\r\n      </ownedParameterBindings>\r\n      <callee href=\"http://www.moflon.org.BlipTGG#//Rules/MModelAttributeToModelAttributeRule/isAppropriate_FWD\"/>\r\n      <target xsi:type=\"patternExpressions:ObjectVariableExpression\" object=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.1\"/>\r\n    </statementExpression>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"Add match to rule result\" outgoing=\"//@ownedActivityEdge.7\" incoming=\"//@ownedActivityEdge.6\">\r\n    <storyPattern>\r\n      <objectVariable name=\"match\" incomingLink=\"//@ownedActivityNode.6/@storyPattern/@linkVariable.0\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Match\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"ruleresult\" outgoingLink=\"//@ownedActivityNode.6/@storyPattern/@linkVariable.0\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//IsAppropriateRuleResult\"/>\r\n      </objectVariable>\r\n      <linkVariable name=\"matches\" target=\"//@ownedActivityNode.6/@storyPattern/@objectVariable.0\" source=\"//@ownedActivityNode.6/@storyPattern/@objectVariable.1\" bindingOperator=\"CREATE\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.4\" target=\"//@ownedActivityNode.0\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.1\" target=\"//@ownedActivityNode.5\" guard=\"EACH_TIME\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.2\" target=\"//@ownedActivityNode.3\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.1\" target=\"//@ownedActivityNode.2\" guard=\"END\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.0\" target=\"//@ownedActivityNode.1\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.5\" target=\"//@ownedActivityNode.1\" guard=\"FAILURE\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.5\" target=\"//@ownedActivityNode.6\" guard=\"SUCCESS\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.6\" target=\"//@ownedActivityNode.1\"/>\r\n</activities:Activity>\r\n'"
	 *        annotation="http://www.eclipse.org/emf/2002/GenModel body='boolean fujaba__Success = false;\n      Object _TmpObject = null;\n      EClass eClass = null;\n      Iterator fujaba__IterEClassToPerformOperation = null;\n      EOperation performOperation = null;\n      IsAppropriateRuleResult ruleresult = null;\n      Match match = null;\n      Iterator fujaba__IterModelAttributeNodeToTypeAttr = null;\n      Attribute typeAttr = null;\n      Node modelNode = null;\n      Iterator fujaba__IterRuleresultToMatch = null;\n\n      // story node \'prepare return value\'\n      try \n      {\n         fujaba__Success = false; \n\n         _TmpObject = (this.eClass());\n\n         // ensure correct type and really bound of object eClass\n         JavaSDM.ensure ( _TmpObject instanceof EClass );\n         eClass = (EClass) _TmpObject;\n         // iterate to-many link eOperations from eClass to performOperation\n         fujaba__Success = false;\n\n         fujaba__IterEClassToPerformOperation = eClass.getEOperations().iterator ();\n\n         while ( !(fujaba__Success) && fujaba__IterEClassToPerformOperation.hasNext () )\n         {\n            try\n            {\n               performOperation = (EOperation) fujaba__IterEClassToPerformOperation.next ();\n\n               // check object performOperation is really bound\n               JavaSDM.ensure ( performOperation != null );\n               // attribute condition\n               JavaSDM.ensure ( JavaSDM.stringCompare (performOperation.getName (), \"isApplicable_FWD\") == 0 );\n\n\n               fujaba__Success = true;\n            }\n            catch ( JavaSDMException fujaba__InternalException )\n            {\n               fujaba__Success = false;\n            }\n         }\n         JavaSDM.ensure (fujaba__Success);\n         // create object ruleresult\n         ruleresult = TGGRuntimeFactory.eINSTANCE.createIsAppropriateRuleResult();\n\n         // assign attribute ruleresult\n         ruleresult.setSuccess (false);\n\n         // create link\n         ruleresult.setPerformOperation( performOperation);\n\n         fujaba__Success = true;\n      }\n      catch ( JavaSDMException fujaba__InternalException )\n      {\n         fujaba__Success = false;\n      }\n\n      // story node \'test core match\'\n      try \n      {\n         fujaba__Success = false; \n\n         // check object modelAttributeNode is really bound\n         JavaSDM.ensure ( modelAttributeNode != null );\n         // check object ruleresult is really bound\n         JavaSDM.ensure ( ruleresult != null );\n         // bind object\n         modelNode = modelAttributeNode.getParentNode ();\n\n         // check object modelNode is really bound\n         JavaSDM.ensure ( modelNode != null );\n\n         // check isomorphic binding between objects modelNode and modelAttributeNode \n         JavaSDM.ensure ( !modelNode.equals (modelAttributeNode) );\n\n         // iterate to-many link attribute from modelAttributeNode to typeAttr\n         fujaba__Success = false;\n\n         fujaba__IterModelAttributeNodeToTypeAttr = new ArrayList(modelAttributeNode.getAttribute()).iterator ();\n\n         while ( fujaba__IterModelAttributeNodeToTypeAttr.hasNext () )\n         {\n            try\n            {\n               typeAttr = (Attribute) fujaba__IterModelAttributeNodeToTypeAttr.next ();\n\n               // check object typeAttr is really bound\n               JavaSDM.ensure ( typeAttr != null );\n               // attribute condition\n               JavaSDM.ensure ( JavaSDM.stringCompare (typeAttr.getName (), \"type\") == 0 );\n\n               // create object match\n               match = TGGRuntimeFactory.eINSTANCE.createMatch();\n\n               // statement node \'bookkeeping with generic isAppropriate method\'\n               fujaba__Success = this.isAppropriate_FWD(match,modelNode,modelAttributeNode,typeAttr);\n               if (fujaba__Success)\n               {\n                  // story node \'Add match to rule result\'\n                  try \n                  {\n                     fujaba__Success = false; \n\n                     // check object match is really bound\n                     JavaSDM.ensure ( match != null );\n                     // check object ruleresult is really bound\n                     JavaSDM.ensure ( ruleresult != null );\n\n                     // create link\n                     ruleresult.getMatches().add(match);\n\n                     fujaba__Success = true;\n                  }\n                  catch ( JavaSDMException fujaba__InternalException )\n                  {\n                     fujaba__Success = false;\n                  }\n\n\n               }\n               else\n               {\n\n               }\n\n               fujaba__Success = true;\n            }\n            catch ( JavaSDMException fujaba__InternalException )\n            {\n               fujaba__Success = false;\n            }\n         }\n         JavaSDM.ensure (fujaba__Success);\n\n         fujaba__Success = true;\n      }\n      catch ( JavaSDMException fujaba__InternalException )\n      {\n         fujaba__Success = false;\n      }\n\n      // story node \'set success\'\n      try \n      {\n         fujaba__Success = false; \n\n         // check object ruleresult is really bound\n         JavaSDM.ensure ( ruleresult != null );\n         // iterate to-many link matches from ruleresult to match\n         fujaba__Success = false;\n\n         fujaba__IterRuleresultToMatch = ruleresult.getMatches().iterator ();\n\n         while ( !(fujaba__Success) && fujaba__IterRuleresultToMatch.hasNext () )\n         {\n            try\n            {\n               match = (Match) fujaba__IterRuleresultToMatch.next ();\n\n               // check object match is really bound\n               JavaSDM.ensure ( match != null );\n\n               fujaba__Success = true;\n            }\n            catch ( JavaSDMException fujaba__InternalException )\n            {\n               fujaba__Success = false;\n            }\n         }\n         JavaSDM.ensure (fujaba__Success);\n         // assign attribute ruleresult\n         ruleresult.setSuccess (true);\n         fujaba__Success = true;\n      }\n      catch ( JavaSDMException fujaba__InternalException )\n      {\n         fujaba__Success = false;\n      }\n\n      return ruleresult;'"
	 * @generated
	 */
	IsAppropriateRuleResult isAppropriate_FWD_Node_2(Node modelAttributeNode);

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @model annotation="SDM XMI='<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<activities:Activity xmi:version=\"2.0\" xmlns:xmi=\"http://www.omg.org/XMI\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:TGGLanguage=\"http://www.moflon.org.TGGLanguage\" xmlns:activities=\"http://www.moflon.org.SDMLanguage.activities\" xmlns:callExpressions=\"http://www.moflon.org.SDMLanguage.calls.callExpressions\" xmlns:csp=\"http://www.moflon.org.TGGLanguage.csp\" xmlns:ecore=\"http://www.eclipse.org/emf/2002/Ecore\" xmlns:expressions=\"http://www.moflon.org.SDMLanguage.expressions\" xmlns:patternExpressions=\"http://www.moflon.org.SDMLanguage.patterns.patternExpressions\">\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"prepare return value\" outgoing=\"//@ownedActivityEdge.4\" incoming=\"//@ownedActivityEdge.0\">\r\n    <storyPattern>\r\n      <objectVariable name=\"performOperation\" incomingLink=\"//@ownedActivityNode.0/@storyPattern/@linkVariable.1 //@ownedActivityNode.0/@storyPattern/@linkVariable.0\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.eclipse.org/emf/2002/Ecore#//EOperation\"/>\r\n        <constraint>\r\n          <constraintExpression xsi:type=\"expressions:ComparisonExpression\" operator=\"EQUAL\">\r\n            <rightExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;isApplicable_FWD&quot;\"/>\r\n            <leftExpression xsi:type=\"patternExpressions:AttributeValueExpression\" object=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.0\">\r\n              <attribute href=\"http://www.eclipse.org/emf/2002/Ecore#//ENamedElement/name\"/>\r\n            </leftExpression>\r\n          </constraintExpression>\r\n        </constraint>\r\n      </objectVariable>\r\n      <objectVariable name=\"this\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.BlipTGG#//Rules/MModelAttributeToModelAttributeRule\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"ruleresult\" outgoingLink=\"//@ownedActivityNode.0/@storyPattern/@linkVariable.0\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//IsAppropriateRuleResult\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"http://www.moflon.org.TGGRuntime#//RuleResult/success\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"false\"/>\r\n        </attributeAssignment>\r\n      </objectVariable>\r\n      <objectVariable name=\"eClass\" outgoingLink=\"//@ownedActivityNode.0/@storyPattern/@linkVariable.1\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.eclipse.org/emf/2002/Ecore#//EClass\"/>\r\n        <bindingExpression xsi:type=\"expressions:LiteralExpression\" value=\"this.eClass()\"/>\r\n      </objectVariable>\r\n      <linkVariable name=\"performOperation\" target=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.0\" source=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.2\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"eOperations\" target=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.0\" source=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.3\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"test core match\" outgoing=\"//@ownedActivityEdge.3 //@ownedActivityEdge.1\" incoming=\"//@ownedActivityEdge.4 //@ownedActivityEdge.5 //@ownedActivityEdge.7\" forEach=\"true\">\r\n    <storyPattern xsi:type=\"TGGLanguage:TGGRule\" name=\"MModelAttributeToModelAttributeRule\" cspSpec=\"&#xD;&#xA;&#x9;&#x9;eq(modelAttributeNode.name, blipModelAttribute.name)&#xD;&#xA;&#x9;&#x9;eq(typeAttr.value, blipModelAttribute.type)&#xD;&#xA;&#x9;\">\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"modelNode\" incomingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.0\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Node\"/>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"modelAttributeNode\" outgoingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.0 //@ownedActivityNode.1/@storyPattern/@linkVariable.1\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Node\"/>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"typeAttr\" incomingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.1\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//Attribute\"/>\r\n        <constraint>\r\n          <constraintExpression xsi:type=\"expressions:ComparisonExpression\" operator=\"EQUAL\">\r\n            <rightExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;type&quot;\"/>\r\n            <leftExpression xsi:type=\"patternExpressions:AttributeValueExpression\">\r\n              <attribute href=\"platform:/plugin/org.moflon.moca.MocaTree/model/MocaTree.ecore#//TreeElement/name\"/>\r\n            </leftExpression>\r\n          </constraintExpression>\r\n        </constraint>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"ruleresult\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//IsAppropriateRuleResult\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"match\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Match\"/>\r\n      </objectVariable>\r\n      <linkVariable xsi:type=\"TGGLanguage:TGGLinkVariable\" name=\"parentNode\" target=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.0\" source=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.1\">\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </linkVariable>\r\n      <linkVariable xsi:type=\"TGGLanguage:TGGLinkVariable\" name=\"attribute\" target=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.2\" source=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.1\">\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      </linkVariable>\r\n      <correspondence href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.2\"/>\r\n      <source href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      <csp>\r\n        <constraints variables=\"//@ownedActivityNode.1/@storyPattern/@csp/@variables.0 //@ownedActivityNode.1/@storyPattern/@csp/@variables.1\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <constraints variables=\"//@ownedActivityNode.1/@storyPattern/@csp/@variables.2 //@ownedActivityNode.1/@storyPattern/@csp/@variables.3\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"name\" objectVariable=\"modelAttributeNode\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"name\" objectVariable=\"blipModelAttribute\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"value\" objectVariable=\"typeAttr\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"type\" objectVariable=\"blipModelAttribute\"/>\r\n      </csp>\r\n      <target href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.1\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"set success\" outgoing=\"//@ownedActivityEdge.2\" incoming=\"//@ownedActivityEdge.3\">\r\n    <storyPattern>\r\n      <objectVariable name=\"match\" incomingLink=\"//@ownedActivityNode.2/@storyPattern/@linkVariable.0\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Match\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"ruleresult\" outgoingLink=\"//@ownedActivityNode.2/@storyPattern/@linkVariable.0\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//IsAppropriateRuleResult\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"http://www.moflon.org.TGGRuntime#//RuleResult/success\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"true\"/>\r\n        </attributeAssignment>\r\n      </objectVariable>\r\n      <linkVariable name=\"matches\" target=\"//@ownedActivityNode.2/@storyPattern/@objectVariable.0\" source=\"//@ownedActivityNode.2/@storyPattern/@objectVariable.1\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StopNode\" incoming=\"//@ownedActivityEdge.2\">\r\n    <returnValue xsi:type=\"patternExpressions:ObjectVariableExpression\" object=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.2\"/>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StartNode\" outgoing=\"//@ownedActivityEdge.0\"/>\r\n  <ownedActivityNode xsi:type=\"activities:StatementNode\" name=\"bookkeeping with generic isAppropriate method\" outgoing=\"//@ownedActivityEdge.5 //@ownedActivityEdge.6\" incoming=\"//@ownedActivityEdge.1\">\r\n    <statementExpression xsi:type=\"callExpressions:MethodCallExpression\">\r\n      <ownedParameterBindings>\r\n        <valueExpression xsi:type=\"expressions:TextualExpression\" expressionText=\"match\"/>\r\n        <parameter href=\"http://www.moflon.org.BlipTGG#//Rules/MModelAttributeToModelAttributeRule/isAppropriate_FWD/match\"/>\r\n      </ownedParameterBindings>\r\n      <ownedParameterBindings>\r\n        <valueExpression xsi:type=\"expressions:TextualExpression\" expressionText=\"modelNode\"/>\r\n        <parameter href=\"http://www.moflon.org.BlipTGG#//Rules/MModelAttributeToModelAttributeRule/isAppropriate_FWD/modelNode\"/>\r\n      </ownedParameterBindings>\r\n      <ownedParameterBindings>\r\n        <valueExpression xsi:type=\"expressions:TextualExpression\" expressionText=\"modelAttributeNode\"/>\r\n        <parameter href=\"http://www.moflon.org.BlipTGG#//Rules/MModelAttributeToModelAttributeRule/isAppropriate_FWD/modelAttributeNode\"/>\r\n      </ownedParameterBindings>\r\n      <ownedParameterBindings>\r\n        <valueExpression xsi:type=\"expressions:TextualExpression\" expressionText=\"typeAttr\"/>\r\n        <parameter href=\"http://www.moflon.org.BlipTGG#//Rules/MModelAttributeToModelAttributeRule/isAppropriate_FWD/typeAttr\"/>\r\n      </ownedParameterBindings>\r\n      <callee href=\"http://www.moflon.org.BlipTGG#//Rules/MModelAttributeToModelAttributeRule/isAppropriate_FWD\"/>\r\n      <target xsi:type=\"patternExpressions:ObjectVariableExpression\" object=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.1\"/>\r\n    </statementExpression>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"Add match to rule result\" outgoing=\"//@ownedActivityEdge.7\" incoming=\"//@ownedActivityEdge.6\">\r\n    <storyPattern>\r\n      <objectVariable name=\"match\" incomingLink=\"//@ownedActivityNode.6/@storyPattern/@linkVariable.0\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Match\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"ruleresult\" outgoingLink=\"//@ownedActivityNode.6/@storyPattern/@linkVariable.0\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//IsAppropriateRuleResult\"/>\r\n      </objectVariable>\r\n      <linkVariable name=\"matches\" target=\"//@ownedActivityNode.6/@storyPattern/@objectVariable.0\" source=\"//@ownedActivityNode.6/@storyPattern/@objectVariable.1\" bindingOperator=\"CREATE\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.4\" target=\"//@ownedActivityNode.0\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.1\" target=\"//@ownedActivityNode.5\" guard=\"EACH_TIME\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.2\" target=\"//@ownedActivityNode.3\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.1\" target=\"//@ownedActivityNode.2\" guard=\"END\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.0\" target=\"//@ownedActivityNode.1\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.5\" target=\"//@ownedActivityNode.1\" guard=\"FAILURE\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.5\" target=\"//@ownedActivityNode.6\" guard=\"SUCCESS\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.6\" target=\"//@ownedActivityNode.1\"/>\r\n</activities:Activity>\r\n'"
	 *        annotation="http://www.eclipse.org/emf/2002/GenModel body='boolean fujaba__Success = false;\n      Object _TmpObject = null;\n      EClass eClass = null;\n      Iterator fujaba__IterEClassToPerformOperation = null;\n      EOperation performOperation = null;\n      IsAppropriateRuleResult ruleresult = null;\n      Match match = null;\n      Node modelNode = null;\n      Node modelAttributeNode = null;\n      Iterator fujaba__IterRuleresultToMatch = null;\n\n      // story node \'prepare return value\'\n      try \n      {\n         fujaba__Success = false; \n\n         _TmpObject = (this.eClass());\n\n         // ensure correct type and really bound of object eClass\n         JavaSDM.ensure ( _TmpObject instanceof EClass );\n         eClass = (EClass) _TmpObject;\n         // iterate to-many link eOperations from eClass to performOperation\n         fujaba__Success = false;\n\n         fujaba__IterEClassToPerformOperation = eClass.getEOperations().iterator ();\n\n         while ( !(fujaba__Success) && fujaba__IterEClassToPerformOperation.hasNext () )\n         {\n            try\n            {\n               performOperation = (EOperation) fujaba__IterEClassToPerformOperation.next ();\n\n               // check object performOperation is really bound\n               JavaSDM.ensure ( performOperation != null );\n               // attribute condition\n               JavaSDM.ensure ( JavaSDM.stringCompare (performOperation.getName (), \"isApplicable_FWD\") == 0 );\n\n\n               fujaba__Success = true;\n            }\n            catch ( JavaSDMException fujaba__InternalException )\n            {\n               fujaba__Success = false;\n            }\n         }\n         JavaSDM.ensure (fujaba__Success);\n         // create object ruleresult\n         ruleresult = TGGRuntimeFactory.eINSTANCE.createIsAppropriateRuleResult();\n\n         // assign attribute ruleresult\n         ruleresult.setSuccess (false);\n\n         // create link\n         ruleresult.setPerformOperation( performOperation);\n\n         fujaba__Success = true;\n      }\n      catch ( JavaSDMException fujaba__InternalException )\n      {\n         fujaba__Success = false;\n      }\n\n      // story node \'test core match\'\n      try \n      {\n         fujaba__Success = false; \n\n         // check object ruleresult is really bound\n         JavaSDM.ensure ( ruleresult != null );\n         // check object typeAttr is really bound\n         JavaSDM.ensure ( typeAttr != null );\n         // bind object\n         modelAttributeNode = typeAttr.getNode ();\n\n         // check object modelAttributeNode is really bound\n         JavaSDM.ensure ( modelAttributeNode != null );\n\n         // bind object\n         modelNode = modelAttributeNode.getParentNode ();\n\n         // check object modelNode is really bound\n         JavaSDM.ensure ( modelNode != null );\n\n         // check isomorphic binding between objects modelNode and modelAttributeNode \n         JavaSDM.ensure ( !modelNode.equals (modelAttributeNode) );\n\n         // attribute condition\n         JavaSDM.ensure ( JavaSDM.stringCompare (typeAttr.getName (), \"type\") == 0 );\n\n         // create object match\n         match = TGGRuntimeFactory.eINSTANCE.createMatch();\n\n         // statement node \'bookkeeping with generic isAppropriate method\'\n         fujaba__Success = this.isAppropriate_FWD(match,modelNode,modelAttributeNode,typeAttr);\n         if (fujaba__Success)\n         {\n            // story node \'Add match to rule result\'\n            try \n            {\n               fujaba__Success = false; \n\n               // check object match is really bound\n               JavaSDM.ensure ( match != null );\n               // check object ruleresult is really bound\n               JavaSDM.ensure ( ruleresult != null );\n\n               // create link\n               ruleresult.getMatches().add(match);\n\n               fujaba__Success = true;\n            }\n            catch ( JavaSDMException fujaba__InternalException )\n            {\n               fujaba__Success = false;\n            }\n\n\n         }\n         else\n         {\n\n         }\n\n\n         fujaba__Success = true;\n      }\n      catch ( JavaSDMException fujaba__InternalException )\n      {\n         fujaba__Success = false;\n      }\n\n      // story node \'set success\'\n      try \n      {\n         fujaba__Success = false; \n\n         // check object ruleresult is really bound\n         JavaSDM.ensure ( ruleresult != null );\n         // iterate to-many link matches from ruleresult to match\n         fujaba__Success = false;\n\n         fujaba__IterRuleresultToMatch = ruleresult.getMatches().iterator ();\n\n         while ( !(fujaba__Success) && fujaba__IterRuleresultToMatch.hasNext () )\n         {\n            try\n            {\n               match = (Match) fujaba__IterRuleresultToMatch.next ();\n\n               // check object match is really bound\n               JavaSDM.ensure ( match != null );\n\n               fujaba__Success = true;\n            }\n            catch ( JavaSDMException fujaba__InternalException )\n            {\n               fujaba__Success = false;\n            }\n         }\n         JavaSDM.ensure (fujaba__Success);\n         // assign attribute ruleresult\n         ruleresult.setSuccess (true);\n         fujaba__Success = true;\n      }\n      catch ( JavaSDMException fujaba__InternalException )\n      {\n         fujaba__Success = false;\n      }\n\n      return ruleresult;'"
	 * @generated
	 */
	IsAppropriateRuleResult isAppropriate_FWD_Attribute_4(Attribute typeAttr);

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @model annotation="SDM XMI='<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<activities:Activity xmi:version=\"2.0\" xmlns:xmi=\"http://www.omg.org/XMI\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:TGGLanguage=\"http://www.moflon.org.TGGLanguage\" xmlns:activities=\"http://www.moflon.org.SDMLanguage.activities\" xmlns:callExpressions=\"http://www.moflon.org.SDMLanguage.calls.callExpressions\" xmlns:csp=\"http://www.moflon.org.TGGLanguage.csp\" xmlns:ecore=\"http://www.eclipse.org/emf/2002/Ecore\" xmlns:expressions=\"http://www.moflon.org.SDMLanguage.expressions\" xmlns:patternExpressions=\"http://www.moflon.org.SDMLanguage.patterns.patternExpressions\">\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"prepare return value\" outgoing=\"//@ownedActivityEdge.4\" incoming=\"//@ownedActivityEdge.0\">\r\n    <storyPattern>\r\n      <objectVariable name=\"performOperation\" incomingLink=\"//@ownedActivityNode.0/@storyPattern/@linkVariable.1 //@ownedActivityNode.0/@storyPattern/@linkVariable.0\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.eclipse.org/emf/2002/Ecore#//EOperation\"/>\r\n        <constraint>\r\n          <constraintExpression xsi:type=\"expressions:ComparisonExpression\" operator=\"EQUAL\">\r\n            <rightExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;isApplicable_BWD&quot;\"/>\r\n            <leftExpression xsi:type=\"patternExpressions:AttributeValueExpression\" object=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.0\">\r\n              <attribute href=\"http://www.eclipse.org/emf/2002/Ecore#//ENamedElement/name\"/>\r\n            </leftExpression>\r\n          </constraintExpression>\r\n        </constraint>\r\n      </objectVariable>\r\n      <objectVariable name=\"this\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.BlipTGG#//Rules/MModelAttributeToModelAttributeRule\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"ruleresult\" outgoingLink=\"//@ownedActivityNode.0/@storyPattern/@linkVariable.0\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//IsAppropriateRuleResult\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"http://www.moflon.org.TGGRuntime#//RuleResult/success\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"false\"/>\r\n        </attributeAssignment>\r\n      </objectVariable>\r\n      <objectVariable name=\"eClass\" outgoingLink=\"//@ownedActivityNode.0/@storyPattern/@linkVariable.1\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.eclipse.org/emf/2002/Ecore#//EClass\"/>\r\n        <bindingExpression xsi:type=\"expressions:LiteralExpression\" value=\"this.eClass()\"/>\r\n      </objectVariable>\r\n      <linkVariable name=\"performOperation\" target=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.0\" source=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.2\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"eOperations\" target=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.0\" source=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.3\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"test core match\" outgoing=\"//@ownedActivityEdge.3 //@ownedActivityEdge.1\" incoming=\"//@ownedActivityEdge.4 //@ownedActivityEdge.5 //@ownedActivityEdge.7\" forEach=\"true\">\r\n    <storyPattern xsi:type=\"TGGLanguage:TGGRule\" name=\"MModelAttributeToModelAttributeRule\" cspSpec=\"&#xD;&#xA;&#x9;&#x9;eq(modelAttributeNode.name, blipModelAttribute.name)&#xD;&#xA;&#x9;&#x9;eq(typeAttr.value, blipModelAttribute.type)&#xD;&#xA;&#x9;\">\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"blipModel\" outgoingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.0\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/resource/BlipLanguage/model/BlipLanguage.ecore#//BlipModel\"/>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.1\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"blipModelAttribute\" incomingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.0\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/resource/BlipLanguage/model/BlipLanguage.ecore#//BlipModelAttribute\"/>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.1\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"ruleresult\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//IsAppropriateRuleResult\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"match\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Match\"/>\r\n      </objectVariable>\r\n      <linkVariable xsi:type=\"TGGLanguage:TGGLinkVariable\" name=\"attributes\" target=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.1\" source=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.0\">\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.1\"/>\r\n      </linkVariable>\r\n      <correspondence href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.2\"/>\r\n      <source href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      <csp>\r\n        <constraints variables=\"//@ownedActivityNode.1/@storyPattern/@csp/@variables.0 //@ownedActivityNode.1/@storyPattern/@csp/@variables.1\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <constraints variables=\"//@ownedActivityNode.1/@storyPattern/@csp/@variables.2 //@ownedActivityNode.1/@storyPattern/@csp/@variables.3\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"name\" objectVariable=\"modelAttributeNode\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"name\" objectVariable=\"blipModelAttribute\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"value\" objectVariable=\"typeAttr\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"type\" objectVariable=\"blipModelAttribute\"/>\r\n      </csp>\r\n      <target href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.1\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"set success\" outgoing=\"//@ownedActivityEdge.2\" incoming=\"//@ownedActivityEdge.3\">\r\n    <storyPattern>\r\n      <objectVariable name=\"match\" incomingLink=\"//@ownedActivityNode.2/@storyPattern/@linkVariable.0\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Match\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"ruleresult\" outgoingLink=\"//@ownedActivityNode.2/@storyPattern/@linkVariable.0\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//IsAppropriateRuleResult\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"http://www.moflon.org.TGGRuntime#//RuleResult/success\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"true\"/>\r\n        </attributeAssignment>\r\n      </objectVariable>\r\n      <linkVariable name=\"matches\" target=\"//@ownedActivityNode.2/@storyPattern/@objectVariable.0\" source=\"//@ownedActivityNode.2/@storyPattern/@objectVariable.1\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StopNode\" incoming=\"//@ownedActivityEdge.2\">\r\n    <returnValue xsi:type=\"patternExpressions:ObjectVariableExpression\" object=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.2\"/>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StartNode\" outgoing=\"//@ownedActivityEdge.0\"/>\r\n  <ownedActivityNode xsi:type=\"activities:StatementNode\" name=\"bookkeeping with generic isAppropriate method\" outgoing=\"//@ownedActivityEdge.5 //@ownedActivityEdge.6\" incoming=\"//@ownedActivityEdge.1\">\r\n    <statementExpression xsi:type=\"callExpressions:MethodCallExpression\">\r\n      <ownedParameterBindings>\r\n        <valueExpression xsi:type=\"expressions:TextualExpression\" expressionText=\"match\"/>\r\n        <parameter href=\"http://www.moflon.org.BlipTGG#//Rules/MModelAttributeToModelAttributeRule/isAppropriate_BWD/match\"/>\r\n      </ownedParameterBindings>\r\n      <ownedParameterBindings>\r\n        <valueExpression xsi:type=\"expressions:TextualExpression\" expressionText=\"blipModel\"/>\r\n        <parameter href=\"http://www.moflon.org.BlipTGG#//Rules/MModelAttributeToModelAttributeRule/isAppropriate_BWD/blipModel\"/>\r\n      </ownedParameterBindings>\r\n      <ownedParameterBindings>\r\n        <valueExpression xsi:type=\"expressions:TextualExpression\" expressionText=\"blipModelAttribute\"/>\r\n        <parameter href=\"http://www.moflon.org.BlipTGG#//Rules/MModelAttributeToModelAttributeRule/isAppropriate_BWD/blipModelAttribute\"/>\r\n      </ownedParameterBindings>\r\n      <callee href=\"http://www.moflon.org.BlipTGG#//Rules/MModelAttributeToModelAttributeRule/isAppropriate_BWD\"/>\r\n      <target xsi:type=\"patternExpressions:ObjectVariableExpression\" object=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.1\"/>\r\n    </statementExpression>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"Add match to rule result\" outgoing=\"//@ownedActivityEdge.7\" incoming=\"//@ownedActivityEdge.6\">\r\n    <storyPattern>\r\n      <objectVariable name=\"match\" incomingLink=\"//@ownedActivityNode.6/@storyPattern/@linkVariable.0\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Match\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"ruleresult\" outgoingLink=\"//@ownedActivityNode.6/@storyPattern/@linkVariable.0\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//IsAppropriateRuleResult\"/>\r\n      </objectVariable>\r\n      <linkVariable name=\"matches\" target=\"//@ownedActivityNode.6/@storyPattern/@objectVariable.0\" source=\"//@ownedActivityNode.6/@storyPattern/@objectVariable.1\" bindingOperator=\"CREATE\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.4\" target=\"//@ownedActivityNode.0\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.1\" target=\"//@ownedActivityNode.5\" guard=\"EACH_TIME\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.2\" target=\"//@ownedActivityNode.3\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.1\" target=\"//@ownedActivityNode.2\" guard=\"END\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.0\" target=\"//@ownedActivityNode.1\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.5\" target=\"//@ownedActivityNode.1\" guard=\"FAILURE\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.5\" target=\"//@ownedActivityNode.6\" guard=\"SUCCESS\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.6\" target=\"//@ownedActivityNode.1\"/>\r\n</activities:Activity>\r\n'"
	 *        annotation="http://www.eclipse.org/emf/2002/GenModel body='boolean fujaba__Success = false;\n      Object _TmpObject = null;\n      EClass eClass = null;\n      Iterator fujaba__IterEClassToPerformOperation = null;\n      EOperation performOperation = null;\n      IsAppropriateRuleResult ruleresult = null;\n      Match match = null;\n      Iterator fujaba__IterBlipModelToBlipModelAttribute = null;\n      BlipModelAttribute blipModelAttribute = null;\n      Iterator fujaba__IterRuleresultToMatch = null;\n\n      // story node \'prepare return value\'\n      try \n      {\n         fujaba__Success = false; \n\n         _TmpObject = (this.eClass());\n\n         // ensure correct type and really bound of object eClass\n         JavaSDM.ensure ( _TmpObject instanceof EClass );\n         eClass = (EClass) _TmpObject;\n         // iterate to-many link eOperations from eClass to performOperation\n         fujaba__Success = false;\n\n         fujaba__IterEClassToPerformOperation = eClass.getEOperations().iterator ();\n\n         while ( !(fujaba__Success) && fujaba__IterEClassToPerformOperation.hasNext () )\n         {\n            try\n            {\n               performOperation = (EOperation) fujaba__IterEClassToPerformOperation.next ();\n\n               // check object performOperation is really bound\n               JavaSDM.ensure ( performOperation != null );\n               // attribute condition\n               JavaSDM.ensure ( JavaSDM.stringCompare (performOperation.getName (), \"isApplicable_BWD\") == 0 );\n\n\n               fujaba__Success = true;\n            }\n            catch ( JavaSDMException fujaba__InternalException )\n            {\n               fujaba__Success = false;\n            }\n         }\n         JavaSDM.ensure (fujaba__Success);\n         // create object ruleresult\n         ruleresult = TGGRuntimeFactory.eINSTANCE.createIsAppropriateRuleResult();\n\n         // assign attribute ruleresult\n         ruleresult.setSuccess (false);\n\n         // create link\n         ruleresult.setPerformOperation( performOperation);\n\n         fujaba__Success = true;\n      }\n      catch ( JavaSDMException fujaba__InternalException )\n      {\n         fujaba__Success = false;\n      }\n\n      // story node \'test core match\'\n      try \n      {\n         fujaba__Success = false; \n\n         // check object blipModel is really bound\n         JavaSDM.ensure ( blipModel != null );\n         // check object ruleresult is really bound\n         JavaSDM.ensure ( ruleresult != null );\n         // iterate to-many link attributes from blipModel to blipModelAttribute\n         fujaba__Success = false;\n\n         fujaba__IterBlipModelToBlipModelAttribute = new ArrayList(blipModel.getAttributes()).iterator ();\n\n         while ( fujaba__IterBlipModelToBlipModelAttribute.hasNext () )\n         {\n            try\n            {\n               blipModelAttribute = (BlipModelAttribute) fujaba__IterBlipModelToBlipModelAttribute.next ();\n\n               // check object blipModelAttribute is really bound\n               JavaSDM.ensure ( blipModelAttribute != null );\n               // create object match\n               match = TGGRuntimeFactory.eINSTANCE.createMatch();\n\n               // statement node \'bookkeeping with generic isAppropriate method\'\n               fujaba__Success = this.isAppropriate_BWD(match,blipModel,blipModelAttribute);\n               if (fujaba__Success)\n               {\n                  // story node \'Add match to rule result\'\n                  try \n                  {\n                     fujaba__Success = false; \n\n                     // check object match is really bound\n                     JavaSDM.ensure ( match != null );\n                     // check object ruleresult is really bound\n                     JavaSDM.ensure ( ruleresult != null );\n\n                     // create link\n                     ruleresult.getMatches().add(match);\n\n                     fujaba__Success = true;\n                  }\n                  catch ( JavaSDMException fujaba__InternalException )\n                  {\n                     fujaba__Success = false;\n                  }\n\n\n               }\n               else\n               {\n\n               }\n\n               fujaba__Success = true;\n            }\n            catch ( JavaSDMException fujaba__InternalException )\n            {\n               fujaba__Success = false;\n            }\n         }\n         JavaSDM.ensure (fujaba__Success);\n         fujaba__Success = true;\n      }\n      catch ( JavaSDMException fujaba__InternalException )\n      {\n         fujaba__Success = false;\n      }\n\n      // story node \'set success\'\n      try \n      {\n         fujaba__Success = false; \n\n         // check object ruleresult is really bound\n         JavaSDM.ensure ( ruleresult != null );\n         // iterate to-many link matches from ruleresult to match\n         fujaba__Success = false;\n\n         fujaba__IterRuleresultToMatch = ruleresult.getMatches().iterator ();\n\n         while ( !(fujaba__Success) && fujaba__IterRuleresultToMatch.hasNext () )\n         {\n            try\n            {\n               match = (Match) fujaba__IterRuleresultToMatch.next ();\n\n               // check object match is really bound\n               JavaSDM.ensure ( match != null );\n\n               fujaba__Success = true;\n            }\n            catch ( JavaSDMException fujaba__InternalException )\n            {\n               fujaba__Success = false;\n            }\n         }\n         JavaSDM.ensure (fujaba__Success);\n         // assign attribute ruleresult\n         ruleresult.setSuccess (true);\n         fujaba__Success = true;\n      }\n      catch ( JavaSDMException fujaba__InternalException )\n      {\n         fujaba__Success = false;\n      }\n\n      return ruleresult;'"
	 * @generated
	 */
	IsAppropriateRuleResult isAppropriate_BWD_BlipModel_0(BlipModel blipModel);

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @model annotation="SDM XMI='<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<activities:Activity xmi:version=\"2.0\" xmlns:xmi=\"http://www.omg.org/XMI\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:TGGLanguage=\"http://www.moflon.org.TGGLanguage\" xmlns:activities=\"http://www.moflon.org.SDMLanguage.activities\" xmlns:callExpressions=\"http://www.moflon.org.SDMLanguage.calls.callExpressions\" xmlns:csp=\"http://www.moflon.org.TGGLanguage.csp\" xmlns:ecore=\"http://www.eclipse.org/emf/2002/Ecore\" xmlns:expressions=\"http://www.moflon.org.SDMLanguage.expressions\" xmlns:patternExpressions=\"http://www.moflon.org.SDMLanguage.patterns.patternExpressions\">\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"prepare return value\" outgoing=\"//@ownedActivityEdge.4\" incoming=\"//@ownedActivityEdge.0\">\r\n    <storyPattern>\r\n      <objectVariable name=\"performOperation\" incomingLink=\"//@ownedActivityNode.0/@storyPattern/@linkVariable.1 //@ownedActivityNode.0/@storyPattern/@linkVariable.0\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.eclipse.org/emf/2002/Ecore#//EOperation\"/>\r\n        <constraint>\r\n          <constraintExpression xsi:type=\"expressions:ComparisonExpression\" operator=\"EQUAL\">\r\n            <rightExpression xsi:type=\"expressions:LiteralExpression\" value=\"&quot;isApplicable_BWD&quot;\"/>\r\n            <leftExpression xsi:type=\"patternExpressions:AttributeValueExpression\" object=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.0\">\r\n              <attribute href=\"http://www.eclipse.org/emf/2002/Ecore#//ENamedElement/name\"/>\r\n            </leftExpression>\r\n          </constraintExpression>\r\n        </constraint>\r\n      </objectVariable>\r\n      <objectVariable name=\"this\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.BlipTGG#//Rules/MModelAttributeToModelAttributeRule\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"ruleresult\" outgoingLink=\"//@ownedActivityNode.0/@storyPattern/@linkVariable.0\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//IsAppropriateRuleResult\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"http://www.moflon.org.TGGRuntime#//RuleResult/success\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"false\"/>\r\n        </attributeAssignment>\r\n      </objectVariable>\r\n      <objectVariable name=\"eClass\" outgoingLink=\"//@ownedActivityNode.0/@storyPattern/@linkVariable.1\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.eclipse.org/emf/2002/Ecore#//EClass\"/>\r\n        <bindingExpression xsi:type=\"expressions:LiteralExpression\" value=\"this.eClass()\"/>\r\n      </objectVariable>\r\n      <linkVariable name=\"performOperation\" target=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.0\" source=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.2\" bindingOperator=\"CREATE\"/>\r\n      <linkVariable name=\"eOperations\" target=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.0\" source=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.3\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"test core match\" outgoing=\"//@ownedActivityEdge.3 //@ownedActivityEdge.1\" incoming=\"//@ownedActivityEdge.4 //@ownedActivityEdge.5 //@ownedActivityEdge.7\" forEach=\"true\">\r\n    <storyPattern xsi:type=\"TGGLanguage:TGGRule\" name=\"MModelAttributeToModelAttributeRule\" cspSpec=\"&#xD;&#xA;&#x9;&#x9;eq(modelAttributeNode.name, blipModelAttribute.name)&#xD;&#xA;&#x9;&#x9;eq(typeAttr.value, blipModelAttribute.type)&#xD;&#xA;&#x9;\">\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"blipModel\" outgoingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.0\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/resource/BlipLanguage/model/BlipLanguage.ecore#//BlipModel\"/>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.1\"/>\r\n      </objectVariable>\r\n      <objectVariable xsi:type=\"TGGLanguage:TGGObjectVariable\" name=\"blipModelAttribute\" incomingLink=\"//@ownedActivityNode.1/@storyPattern/@linkVariable.0\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"platform:/resource/BlipLanguage/model/BlipLanguage.ecore#//BlipModelAttribute\"/>\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.1\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"ruleresult\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//IsAppropriateRuleResult\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"match\" bindingOperator=\"CREATE\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Match\"/>\r\n      </objectVariable>\r\n      <linkVariable xsi:type=\"TGGLanguage:TGGLinkVariable\" name=\"attributes\" target=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.1\" source=\"//@ownedActivityNode.1/@storyPattern/@objectVariable.0\">\r\n        <domain href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.1\"/>\r\n      </linkVariable>\r\n      <correspondence href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.2\"/>\r\n      <source href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.0\"/>\r\n      <csp>\r\n        <constraints variables=\"//@ownedActivityNode.1/@storyPattern/@csp/@variables.0 //@ownedActivityNode.1/@storyPattern/@csp/@variables.1\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <constraints variables=\"//@ownedActivityNode.1/@storyPattern/@csp/@variables.2 //@ownedActivityNode.1/@storyPattern/@csp/@variables.3\" name=\"eq\">\r\n          <allowedAdornments value=\"BB\"/>\r\n          <allowedAdornments value=\"BF\"/>\r\n          <allowedAdornments value=\"FB\"/>\r\n        </constraints>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"name\" objectVariable=\"modelAttributeNode\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"name\" objectVariable=\"blipModelAttribute\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"value\" objectVariable=\"typeAttr\"/>\r\n        <variables xsi:type=\"csp:AttributeVariable\" type=\"String\" attribute=\"type\" objectVariable=\"blipModelAttribute\"/>\r\n      </csp>\r\n      <target href=\"platform:/resource/BlipTGG/model/BlipTGG.tgg.xmi#//@domain.1\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"set success\" outgoing=\"//@ownedActivityEdge.2\" incoming=\"//@ownedActivityEdge.3\">\r\n    <storyPattern>\r\n      <objectVariable name=\"match\" incomingLink=\"//@ownedActivityNode.2/@storyPattern/@linkVariable.0\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Match\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"ruleresult\" outgoingLink=\"//@ownedActivityNode.2/@storyPattern/@linkVariable.0\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//IsAppropriateRuleResult\"/>\r\n        <attributeAssignment>\r\n          <attribute href=\"http://www.moflon.org.TGGRuntime#//RuleResult/success\"/>\r\n          <valueExpression xsi:type=\"expressions:LiteralExpression\" value=\"true\"/>\r\n        </attributeAssignment>\r\n      </objectVariable>\r\n      <linkVariable name=\"matches\" target=\"//@ownedActivityNode.2/@storyPattern/@objectVariable.0\" source=\"//@ownedActivityNode.2/@storyPattern/@objectVariable.1\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StopNode\" incoming=\"//@ownedActivityEdge.2\">\r\n    <returnValue xsi:type=\"patternExpressions:ObjectVariableExpression\" object=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.2\"/>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StartNode\" outgoing=\"//@ownedActivityEdge.0\"/>\r\n  <ownedActivityNode xsi:type=\"activities:StatementNode\" name=\"bookkeeping with generic isAppropriate method\" outgoing=\"//@ownedActivityEdge.5 //@ownedActivityEdge.6\" incoming=\"//@ownedActivityEdge.1\">\r\n    <statementExpression xsi:type=\"callExpressions:MethodCallExpression\">\r\n      <ownedParameterBindings>\r\n        <valueExpression xsi:type=\"expressions:TextualExpression\" expressionText=\"match\"/>\r\n        <parameter href=\"http://www.moflon.org.BlipTGG#//Rules/MModelAttributeToModelAttributeRule/isAppropriate_BWD/match\"/>\r\n      </ownedParameterBindings>\r\n      <ownedParameterBindings>\r\n        <valueExpression xsi:type=\"expressions:TextualExpression\" expressionText=\"blipModel\"/>\r\n        <parameter href=\"http://www.moflon.org.BlipTGG#//Rules/MModelAttributeToModelAttributeRule/isAppropriate_BWD/blipModel\"/>\r\n      </ownedParameterBindings>\r\n      <ownedParameterBindings>\r\n        <valueExpression xsi:type=\"expressions:TextualExpression\" expressionText=\"blipModelAttribute\"/>\r\n        <parameter href=\"http://www.moflon.org.BlipTGG#//Rules/MModelAttributeToModelAttributeRule/isAppropriate_BWD/blipModelAttribute\"/>\r\n      </ownedParameterBindings>\r\n      <callee href=\"http://www.moflon.org.BlipTGG#//Rules/MModelAttributeToModelAttributeRule/isAppropriate_BWD\"/>\r\n      <target xsi:type=\"patternExpressions:ObjectVariableExpression\" object=\"//@ownedActivityNode.0/@storyPattern/@objectVariable.1\"/>\r\n    </statementExpression>\r\n  </ownedActivityNode>\r\n  <ownedActivityNode xsi:type=\"activities:StoryNode\" name=\"Add match to rule result\" outgoing=\"//@ownedActivityEdge.7\" incoming=\"//@ownedActivityEdge.6\">\r\n    <storyPattern>\r\n      <objectVariable name=\"match\" incomingLink=\"//@ownedActivityNode.6/@storyPattern/@linkVariable.0\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//Match\"/>\r\n      </objectVariable>\r\n      <objectVariable name=\"ruleresult\" outgoingLink=\"//@ownedActivityNode.6/@storyPattern/@linkVariable.0\" bindingState=\"BOUND\">\r\n        <type xsi:type=\"ecore:EClass\" href=\"http://www.moflon.org.TGGRuntime#//IsAppropriateRuleResult\"/>\r\n      </objectVariable>\r\n      <linkVariable name=\"matches\" target=\"//@ownedActivityNode.6/@storyPattern/@objectVariable.0\" source=\"//@ownedActivityNode.6/@storyPattern/@objectVariable.1\" bindingOperator=\"CREATE\"/>\r\n    </storyPattern>\r\n  </ownedActivityNode>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.4\" target=\"//@ownedActivityNode.0\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.1\" target=\"//@ownedActivityNode.5\" guard=\"EACH_TIME\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.2\" target=\"//@ownedActivityNode.3\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.1\" target=\"//@ownedActivityNode.2\" guard=\"END\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.0\" target=\"//@ownedActivityNode.1\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.5\" target=\"//@ownedActivityNode.1\" guard=\"FAILURE\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.5\" target=\"//@ownedActivityNode.6\" guard=\"SUCCESS\"/>\r\n  <ownedActivityEdge source=\"//@ownedActivityNode.6\" target=\"//@ownedActivityNode.1\"/>\r\n</activities:Activity>\r\n'"
	 *        annotation="http://www.eclipse.org/emf/2002/GenModel body='boolean fujaba__Success = false;\n      Object _TmpObject = null;\n      EClass eClass = null;\n      Iterator fujaba__IterEClassToPerformOperation = null;\n      EOperation performOperation = null;\n      IsAppropriateRuleResult ruleresult = null;\n      Match match = null;\n      BlipModel blipModel = null;\n      Iterator fujaba__IterRuleresultToMatch = null;\n\n      // story node \'prepare return value\'\n      try \n      {\n         fujaba__Success = false; \n\n         _TmpObject = (this.eClass());\n\n         // ensure correct type and really bound of object eClass\n         JavaSDM.ensure ( _TmpObject instanceof EClass );\n         eClass = (EClass) _TmpObject;\n         // iterate to-many link eOperations from eClass to performOperation\n         fujaba__Success = false;\n\n         fujaba__IterEClassToPerformOperation = eClass.getEOperations().iterator ();\n\n         while ( !(fujaba__Success) && fujaba__IterEClassToPerformOperation.hasNext () )\n         {\n            try\n            {\n               performOperation = (EOperation) fujaba__IterEClassToPerformOperation.next ();\n\n               // check object performOperation is really bound\n               JavaSDM.ensure ( performOperation != null );\n               // attribute condition\n               JavaSDM.ensure ( JavaSDM.stringCompare (performOperation.getName (), \"isApplicable_BWD\") == 0 );\n\n\n               fujaba__Success = true;\n            }\n            catch ( JavaSDMException fujaba__InternalException )\n            {\n               fujaba__Success = false;\n            }\n         }\n         JavaSDM.ensure (fujaba__Success);\n         // create object ruleresult\n         ruleresult = TGGRuntimeFactory.eINSTANCE.createIsAppropriateRuleResult();\n\n         // assign attribute ruleresult\n         ruleresult.setSuccess (false);\n\n         // create link\n         ruleresult.setPerformOperation( performOperation);\n\n         fujaba__Success = true;\n      }\n      catch ( JavaSDMException fujaba__InternalException )\n      {\n         fujaba__Success = false;\n      }\n\n      // story node \'test core match\'\n      try \n      {\n         fujaba__Success = false; \n\n         // check object blipModelAttribute is really bound\n         JavaSDM.ensure ( blipModelAttribute != null );\n         // check object ruleresult is really bound\n         JavaSDM.ensure ( ruleresult != null );\n         // bind object\n         blipModel = blipModelAttribute.eContainer() instanceof BlipModel ? (BlipModel) blipModelAttribute.eContainer() : null;\n\n         // check object blipModel is really bound\n         JavaSDM.ensure ( blipModel != null );\n\n         // check if contained via correct reference\n         JavaSDM.ensure(blipModel.getAttributes().contains(blipModelAttribute));\n\n         // create object match\n         match = TGGRuntimeFactory.eINSTANCE.createMatch();\n\n         // statement node \'bookkeeping with generic isAppropriate method\'\n         fujaba__Success = this.isAppropriate_BWD(match,blipModel,blipModelAttribute);\n         if (fujaba__Success)\n         {\n            // story node \'Add match to rule result\'\n            try \n            {\n               fujaba__Success = false; \n\n               // check object match is really bound\n               JavaSDM.ensure ( match != null );\n               // check object ruleresult is really bound\n               JavaSDM.ensure ( ruleresult != null );\n\n               // create link\n               ruleresult.getMatches().add(match);\n\n               fujaba__Success = true;\n            }\n            catch ( JavaSDMException fujaba__InternalException )\n            {\n               fujaba__Success = false;\n            }\n\n\n         }\n         else\n         {\n\n         }\n\n         fujaba__Success = true;\n      }\n      catch ( JavaSDMException fujaba__InternalException )\n      {\n         fujaba__Success = false;\n      }\n\n      // story node \'set success\'\n      try \n      {\n         fujaba__Success = false; \n\n         // check object ruleresult is really bound\n         JavaSDM.ensure ( ruleresult != null );\n         // iterate to-many link matches from ruleresult to match\n         fujaba__Success = false;\n\n         fujaba__IterRuleresultToMatch = ruleresult.getMatches().iterator ();\n\n         while ( !(fujaba__Success) && fujaba__IterRuleresultToMatch.hasNext () )\n         {\n            try\n            {\n               match = (Match) fujaba__IterRuleresultToMatch.next ();\n\n               // check object match is really bound\n               JavaSDM.ensure ( match != null );\n\n               fujaba__Success = true;\n            }\n            catch ( JavaSDMException fujaba__InternalException )\n            {\n               fujaba__Success = false;\n            }\n         }\n         JavaSDM.ensure (fujaba__Success);\n         // assign attribute ruleresult\n         ruleresult.setSuccess (true);\n         fujaba__Success = true;\n      }\n      catch ( JavaSDMException fujaba__InternalException )\n      {\n         fujaba__Success = false;\n      }\n\n      return ruleresult;'"
	 * @generated
	 */
	IsAppropriateRuleResult isAppropriate_BWD_BlipModelAttribute_0(
			BlipModelAttribute blipModelAttribute);

} // MModelAttributeToModelAttributeRule
